我是websockets的新手,当我试图传递长度大于8192
的JSON
时,websockets立即断开。但是长度为<= 8191
的JSON
工作正常。
是否有任何MAX SIZE/ LIMIT
数据可以通过WebSocket
传递?如果有,大小是多少?
我通过将这些行添加到我的web.xml
中修复了错误
<context-param>
<param-name>org.apache.tomcat.websocket.textBufferSize</param-name>
<param-value>32768</param-value>
</context-param>
<context-param>
<param-name>org.apache.tomcat.websocket.binaryBufferSize</param-name>
<param-value>32768</param-value>
</context-param>
谢谢@大卫·洛伦佐·马里诺。
2条答案
按热度按时间xdnvmnnf1#
关于与WebSocket断开连接相关的问题,我在我的Android客户端也遇到了同样的问题,即接收到下一条消息“二进制消息大小超过最大大小”。
在所有Jetty文档和其他网页中寻找了一些解决方案后,我得到的唯一可行的选择是在WebSocket类定义中包含下一个代码“maxBinaryMessageSize = size * 1024”(其中size是从客户端Angular 来看所需的最大限制),如下面几行所示:
如果有一些WebSocketMaven可以从客户端(Java/Android)确认这是否是一个正确的解决方案,这将是伟大的。谢谢。
68bkxrlz2#
IT实际上是一个非常大的价值,你可能不会担心它。
根据基于RFC-6455成帧,单个帧的最大大小限制为18,446,744,073,709,551,615字节(64位无符号值的最大值)。
只尝试使它尽可能少,以处理您的要求。
因为问题是在服务器端(tomcat)产生的。检查tomcat文档我看到:
二进制消息的预设缓冲区大小为8192字节。您可以将Servlet相关信息环境初始化参数org.apache.tomcat.WebSocket.binaryBufferSize设定为想要的值(字节),来变更Web应用程序的缓冲区大小。
所以你可以通过更新Tomcat配置文件中的org.apache.tomcat.WebSocket.binaryBufferSize参数来改变它。
有关其他信息,请参见tomcat指南here