为什么我在 websocket 上收到 bad/scrambled/garbled 短信?
Why do I receive a bad/scrambled/garbled text message on websocket?
我有一个基于 Jetty(v 9.3.6) 的 websocket 服务器。
有时我会收到一条杂乱无章的短信,它是由 2 条单独的短信组合而成的。
我从客户端发送到服务器的所有消息都是 JSON 格式。
例如我有这 2 条分开的消息:
{"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
处于活动状态。
如果你这样做了,那么你就遇到了 bug 485469
("permessage-deflate extension causes protocol error in Firefox/Chrome")
要么禁用 permessage-deflate
,要么升级到 Jetty 9.3.7.v20160115
我有一个基于 Jetty(v 9.3.6) 的 websocket 服务器。 有时我会收到一条杂乱无章的短信,它是由 2 条单独的短信组合而成的。 我从客户端发送到服务器的所有消息都是 JSON 格式。
例如我有这 2 条分开的消息:
{"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
处于活动状态。
如果你这样做了,那么你就遇到了 bug 485469 ("permessage-deflate extension causes protocol error in Firefox/Chrome")
要么禁用 permessage-deflate
,要么升级到 Jetty 9.3.7.v20160115