java - 为什么我在 websocket 上收到错误/乱码/乱码的短信?

标签 java websocket jetty java-websocket

我有一个基于 Jetty(v 9.3.6) 的 websocket 服务器。 有时我会收到一条乱码短信,它是由两条单独的短信组合而成的。 我从客户端发送到服务器(反之亦然)的所有消息都是 JSON 格式。

例如,我有这两条单独的消息:

{"a":"b","c":"d"}

{"e":"f","g":"h"}

有时(并非总是)我会收到这样的信息:

"b","c":"d"}

"b""g":"h"},"c":"d"}

它要么是不完整的消息,要么是 2 个不同的不完整消息的组合。

当 JSON 解析器开始抛出字符串解析错误时,我注意到了这个错误。

注意:我尝试在本地主机上模拟此操作,但未能成功。在生产服务器上,我有大约 600-1k 个连接客户端,每天发送大约 100k+ 条消息,此错误出现在发送消息总数的 0.5-1% 上。

注 2:客户端是网络浏览器(Chrome、Firefox 等)

最佳答案

确认您的 permessage-deflate 处于 Activity 状态。

如果你这样做了,那么你就被 bug 485469 绊倒了。 (“permessage-deflate 扩展在 Firefox/Chrome 中导致协议(protocol)错误”)

禁用permessage-deflate,或升级到 Jetty 9.3.7.v20160115

关于java - 为什么我在 websocket 上收到错误/乱码/乱码的短信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35812600/

相关文章:

java - 如何使用 Scala 的 AnyVal 调用 Java 可变参数方法?

java - 如何从在线 UML 模型生成 Java?

java - 使用 python 或 java 将不可见文本添加到 pdf 以制作可搜索的 pdf

c# - Web套接字Ping/Pong和Close控制框架的实现

node.js - NodeJS : Adding channels to a Socket. IO服务器无需重启

javascript - 如何打开多个 WebSocket 流

java - 临时编码的工作流程

java - Jetty maven插件和spring 4.1.6 - 类未找到异常

java - 分阶段加载 spring 上下文

scala - 如何在嵌入式 Jetty 中启动 Lift?