我有一个基于 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/