首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Stomp Websocket -太大的发送消息生成1009错误并断开连接

Spring Stomp Websocket是Spring框架中的一个模块,用于实现基于WebSocket协议的双向通信。它提供了一种简单而强大的方式来实现实时通信功能,适用于需要实时更新数据的应用场景,如聊天室、实时数据监控等。

当使用Spring Stomp Websocket发送大量数据时,可能会遇到1009错误并断开连接的问题。这是因为WebSocket协议对消息的大小有限制,当发送的消息超过了协议规定的大小限制时,服务器会返回1009错误码并断开连接。

为了解决这个问题,可以采取以下几种方法:

  1. 分片发送:将大消息分割成多个小消息进行发送,接收端在接收到所有分片后再进行合并。这样可以避免单个消息过大导致的错误。
  2. 压缩消息:对消息进行压缩,减小消息的大小。可以使用压缩算法如Gzip或Deflate对消息进行压缩,然后在发送和接收端进行解压缩。
  3. 优化数据结构:对于需要发送的数据,可以考虑使用更加紧凑的数据结构,减小消息的大小。例如,使用二进制格式代替文本格式,使用字节流代替字符串等。
  4. 调整WebSocket协议的配置:可以通过配置WebSocket容器的相关参数来增加消息大小的限制。具体的配置方法可以参考所使用的WebSocket容器的文档。

推荐的腾讯云相关产品:腾讯云WebSocket服务(https://cloud.tencent.com/product/wss)

腾讯云WebSocket服务是腾讯云提供的一种高可用、高性能的WebSocket解决方案。它提供了稳定可靠的全球部署,支持海量并发连接,可以满足实时通信的需求。同时,腾讯云还提供了丰富的开发工具和SDK,方便开发者快速接入和使用WebSocket服务。

请注意,以上答案仅供参考,具体解决方法可能因实际情况而异。在实际应用中,建议根据具体需求和情况选择合适的解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WebSocket姨母级教程

该技术通过传统 HTTP 发送具有 WebSockets 缺乏各种功能,例如”自动重新连接”、”事件ID” 及 “发送任意事件”能力。...) ACK(确认)) NACK(否认)) DISCONNECT(断开连接)) Server Frames: MESSAGE(消息)) RECEIPT(接收)) ERROR(错误)) (6)....Spring 封装 STOMP 使用 Spring STOMP 支持时,Spring WebSocket 应用程序充当客户端 STOMP 代理。...在那种情况下,Spring 维护与代理 TCP 连接,将消息中继到该代理,并将消息从该代理向下传递到已连接 WebSocket 客户端。.../* 发送消息指定目标地址(这里设置目标地址为自身订阅消息地址,当然也可以设置为其它地址) */ function sendMessageNoParameter() { // 设置发送内容

2.4K20

Spring Websocket 中文文档 (spring5)

由于SpringSockJS服务支持服务器发送心跳(默认情况下每25秒),这意味着如果更频繁地发送消息,通常会在该时间段或更早时间内检测到客户端断开连接。...Spring尽最大努力识别代表客户端断开连接(特定于每个服务器)网络故障,使用中DISCONNECTED_CLIENT_LOG_CATEGORY 定义专用日志类别记录最小消息AbstractSockJsSession...生成消息发送到“brokerChannel”并由消息代理处理。...消息代理找到所有匹配订户,通过"clientOutboundChannel"from将消息编码为STOMP帧并在WebSocket连接发送每个发送MESSAGE帧。...DISCONNECT可能已从客户端发送,也可能在WebSocket会话关闭时自动生成。在某些情况下,每个会话可能会多次发布此事件。对于多个断开连接事件,组件应该是幂等

12.3K76
  • Spring Boot框架下使用WebSocket实现消息推送

    什么是WebSocket WebSocket为浏览器和服务器之间提供了双工异步通信功能,也就是说我们可以利用浏览器给服务器发送消息,服务器也可以给浏览器发送消息,目前主流浏览器主流版本对WebSocket...2.registerStompEndpoints方法表示注册STOMP协议节点,指定映射URL。...当我Project启动之后,在浏览器访问消息发送页面,在该页面发送一条消息,当服务端收到这条消息之后给所有的连接上了服务器浏览器都发送一条消息。...然后我们页面上先有两个按钮,一个是连接,一个是断开连接,两个按钮分别对应不同点击事件,在这两个按钮下方有一个输入框,就是我们要发送内容,然后还有一个发送按钮,发送按钮对应了一个发送消息点击事件。...我在最上面的浏览器上发送消息,其他两个浏览器都能收到我消息。 OK ,以上就是我们在Spring Boot框架下使用WebSocket实现消息推送全过程。

    3.1K40

    Spring国际认证指南:使用 WebSocket 构建交互式 Web 应用程序

    原标题:Spring国际认证指南|了解如何通过 WebSocket 在浏览器和服务器之间发送和接收消息 本指南将引导您完成创建“Hello, world”应用程序过程,该应用程序在浏览器和服务器之间来回发送消息...单击Dependencies选择Websocket。 单击生成。 下载生成 ZIP 文件,该文件是根据您选择配置 Web 应用程序存档。...接下来,您将创建一个控制器来接收问候消息发送问候消息。 创建消息处理控制器 在 Spring 处理 STOMP 消息传递方法中,STOMP 消息可以路由到@Controller类。...打开连接后,系统会要求您输入姓名。输入您姓名,然后单击发送。您姓名将作为 JSON 消息通过 STOMP 发送到服务器。...经过一秒钟模拟延迟后,服务器会发回一条消息,其中包含页面上显示“Hello”问候语。此时,您可以发送另一个名称,也可以单击“断开连接”按钮关闭连接。 概括 恭喜!

    1.9K20

    websocketspring boot 集成 websocket 四种方式

    ,注意它有一个 Session 参数 @OnClose 当 websocket 建立连接断开后会触发这个注解修饰方法,注意它有一个 Session 参数 @OnMessage 当客户端发送消息到服务端时...,会触发这个注解修改方法,它有一个 String 入参表明客户端传入值 @OnError 当 websocket 建立连接时出现异常会触发这个注解修饰方法,注意它有一个 Session 参数 另外一点就是服务端如何发送消息给客户端...也就是说每台服务器都会保存与他连接 session 于本地。然后发消息地方要修改,并不是现在这样直接发送,而通过 redis 订阅机制。...] WebSocket 故事(二)—— Spring 中如何利用 STOMP 快速构建 WebSocket 广播式消息模式[4] SpringBoot 集成 WebSocket【基于纯 H5】进行点对点...[4] WebSocket 故事(二)—— Spring 中如何利用 STOMP 快速构建 WebSocket 广播式消息模式: https://juejin.im/post/5b7071ade51d45665816f8c0

    41.8K119

    第二十章:SpringBoot项目中使用WebSocket配置广播式通信

    WebSocket为浏览器和服务端提供了双工异步通信功能,浏览器可以向服务端发送消息,服务端也可以向浏览器发送消息WebSocket需要浏览器支持,目前大多数主流浏览器都是支持。...图2 如上图2所示,我们通过@EnableWebSocketMessageBroker注解开启使用STOMP协议来传输消息,并且实现了registerStompEndpoints方法添加了对应STOMP...图9 下面是断开连接代码,如下图10所示: ?...图14 我们现在是断开连接状态,我们尝试点击连接看下效果,如下图15所示: ?...图20 可以看到上三个图中,我们WebSocket服务端通过广播形式完成了服务端消息发送到浏览器中。

    1.4K40

    Springboot +WebSocket学习

    对象.onerror 通信发生错误时触发 close websocket对象.onclose 连接关闭时触发 WebSocket方法 WebSocket对象相关方法: 方法 描述 send() 使用连接发送数据...发送消息则由RemoteEndpoint完成,其实例由Session维护,根据使用情况,我们可以通过Session.getBasicRemote获取通过消息发送实例,然后调用其sendXxx()方法就可以发送消息...区别(IE下a标签触发问题) //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。...) SpringBoot2+Netty+WebSocket(netty实现websocket,支持URL参数) Stomp+SockJS框架实现参考文章 Spring websocket+Stomp+SockJS...实现实时通信 详解 Spring使用WebSocket、SockJS、STOMP实现消息功能 Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程 Springboot

    1.3K10

    补习系列(20)-大话WebSocket与尬聊实现

    开源地址:http://stomp.github.io/ Stomp 定义了一些简单指令,如下: 命令 说明 CONNECT 建立连接 SEND 发送消息 SUBSCRIBE 订阅主题 UNSUBSCRIBE...取消订阅 BEGIN 开启事务 COMMIT 提交事务 ABORT 回滚事务 ACK 确认消费 NACK 消息丢弃 DISCONNECT 断开连接 一个简单STOMP消息大致如下: CONNECTaccept-version...会自动引入spring-websocket 依赖,而后者就实现了WebSocket 操作高级封装。...还有一个好消息,就是spring-websocket 也默认支持了 Stomp协议(看吧,Stomp支持者太多了)。而除此之外,还内置了一个叫 SocketJS 东西。...四、参考文档 https://spring.io/guides/gs/messaging-stomp-websocket/ https://blog.coding.net/blog/spring-static-resource-process

    80850

    Spring WebSocket初探2 (Spring WebSocket入门教程)

    See more: Spring WebSocket reference 整个例子属于WiseMenuFrameWork一部分,可以将整个项目Clone下来,如果朋友们有需求,我可以整理一个独立...接上一篇:Spring WebSocket初探1 (Spring WebSocket入门教程) WebSocket前端准备 前端我们需要用到两个js文件: sockjs.js和stomp.js...Stomp Stomp 提供了客户端和代理之间进行广泛消息传输框架。...(socket); 用Stomp将SockJS进行协议封装 stompClient.connect() 与服务端进行连接,同时有一个回调函数,处理连接成功后操作信息。...当我们发送公告后,将上图公告信息在不刷新页面的情况下,使用WebSocket将其改变。发送公告前端代码已经完成,现在我们来写另一个客户端,用来接收第一个页面发送公告,展示在上图红框中。

    64030

    使用消息队列实现 分布式 webSocket

    ,那么在其中一个服务器建立了WebSocket连接用户如何给在另外一个服务器上建立了WebSocket连接用户发送消息呢?...、Kafka等)topic,然后每个应用节点都订阅这个topic,在接收到WebSocket消息后取出这个消息消息接收者用户ID/用户名”,然后再比对自身是否存在相应用户连接,如果存在则推送消息...,否则丢弃接收到这个消息(这个消息接收者所在应用节点会处理) 在用户建立WebSocket连接后,使用Redis缓存记录用户WebSocket建立在哪个应用节点上,然后同样使用消息队列将消息推送到接收者所在应用节点上面...取出用户名判断是否连接到当前应用节点WebSocket SimpUser simpUser = userRegistry.getUser(redisWebsocketMsg.getReceiver...,需要通知接收者连接那个节点发送消息 else if(redisService.isSetMember(Constants.REDIS_WEBSOCKET_USER_SET, receiver

    1.4K21

    使用消息队列轻松实现 分布式 webSocket

    WebSocket连接用户如何给在另外一个服务器上建立了WebSocket连接用户发送消息呢?...、Kafka等)topic,然后每个应用节点都订阅这个topic,在接收到WebSocket消息后取出这个消息消息接收者用户ID/用户名”,然后再比对自身是否存在相应用户连接,如果存在则推送消息...,否则丢弃接收到这个消息(这个消息接收者所在应用节点会处理) 在用户建立WebSocket连接后,使用Redis缓存记录用户WebSocket建立在哪个应用节点上,然后同样使用消息队列将消息推送到接收者所在应用节点上面...取出用户名判断是否连接到当前应用节点WebSocket SimpUser simpUser = userRegistry.getUser(redisWebsocketMsg.getReceiver...,需要通知接收者连接那个节点发送消息 else if(redisService.isSetMember(Constants.REDIS_WEBSOCKET_USER_SET, receiver

    55610

    WebSocket 介绍以及配合 STOMP 使用

    既然是应用程序级别体验,自然应该有应用程序级别的网络基础支持,而这种支持就应该包含长连接,实时通信这种级别的支持;二是,使用目前 HTTP 协议,模拟出两端长连接效果(轮询,阻塞),消耗太大。...在一开始建立连接过程中,希望建立连接客户端会向服务端发送一个 HTTP 请求,询问服务器是不是支持 WebSocket,并且告诉服务端,我使用 WebSocket 请求,希望服务端进行相应响应。...之后消息发送消息接受,连接建立,连接关闭等交互,与 Socket 基本类似。...它地作用是告诉 server client 不想消费这个消息 DISCONNECT // 断开连接 // 服务端 CONNECT // 连接建立 RECEIPT // server 成功处理请求带有...其中就有,调用 stompjs 库,将 sockjs 消息发送stomp 进行改写,将 WebSocket 方法统统用 STOMP 协议方法进行了包装一遍。

    2.9K20

    websocket消息推送设计

    3.2 长轮询 长轮询是前端页面向服务端发送一次 ajax 请求,服务端收到请求后保持连接,直到有新消息才返回响应关闭连接,并且处理完响应信息后再向服务端发送请求 长轮询优点很明显,在服务端没有消息情况下不会频繁请求...3.4 WebSocket方案 webSocket 是 HTML5 下一种新协议,是基于TCP应用层协议,只需要一次连接,便可以实现全双工通信,即客户端和服务端可以相互主动发送消息。...开启使用SockJS后,它会优先选用Websocket协议作为传输协议,如果浏览器不支持Websocket协议,则会在其他方案中,选择一个较好协议进行通讯。 STOMP是面向消息简单文本协议。...使用STOMP好处在于,它完全就是一种消息队列模式,你可以使用生产者与消费者思想来认识它,发送消息是生产者,接收消息是消费者。...此时客户端定时向服务端发送心跳消息,如果超过设定时间仍没有收到心跳,则认为客户端与服务端连接已经断开,然后服务端会关闭连接清理内存中会话信息。

    4.5K10
    领券