首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理Websocket消息中的大数据?

如何处理Websocket消息中的大数据?
EN

Software Engineering用户
提问于 2018-08-21 17:52:47
回答 2查看 10.2K关注 0票数 5

我用Spring编写了一个websocket服务器,用Javascript编写了一个客户机。这些很好用。我还用Java编写了第二个客户机。当这一次试图在连接到主机后处理一个帧时,我会得到以下错误:

代码语言:javascript
运行
复制
org.springframework.web.socket.sockjs.client.WebSocketClientSockJsSession - Transport closed with CloseStatus[code=1009,  reason=The decoded text message was too big for the output buffer and the endpoint does not support partial messages]

一个快速搜索显示你可以更改缓冲区大小,但是我应该马上走这条路吗?我是否应该尝试以某种方式压缩数据(我问这个问题时几乎不知道怎么做)?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2019-07-02 13:25:24

我会提出一个答案,因为它已经将近一年了。

正如@Walfrat所指出的:

请注意,如果数据过多,也可能会导致生产环境中性能较差的设计问题(在生产环境中,连接的缺点和稳定性并不总是在这里)。

考虑到这一点,最好在websocket中推出一条更“通知式”的消息。浏览器客户端可以将其显示为警报或徽章,服务器客户机(服务器订阅服务器)可以将其作为触发器来查询RESTful端点。因此,基本上:

  1. 服务器推送一条“我们在这个通道中有新数据”的消息。
  2. 客户端接收消息,并根据传递的少量信息,知道要查询哪个api端点才能获得更完整的响应。

这允许几乎即时地了解新数据,并使用设计的RESTful端点。

票数 4
EN

Software Engineering用户

发布于 2021-08-10 09:21:41

您的缓冲区需要足够大,以便至少保存您可以预期的最大信息。如果消息很大,就会带来问题。同时打开的连接越多,应用程序的内存占用空间就会越大。这就是为什么Spring的内部缓冲区不是无限的。

如果有可能使消息更小(例如,通过拆分或压缩),这将是一个有用的优化,并将减轻该问题。如果您无法找到使消息更小的方法,那么增加缓冲区大小是剩下的唯一选项。否则,Spring将删除消息,如果它无法缓冲它。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/377235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档