在我的scala应用程序中,我使用Web套接字来获取请求并发送响应。当我尝试在发生异常后通过Web套接字传递base64字符串时
org.jboss.netty.handler.codec.frame.CorruptedFrameException: Max frame length of 65536 has been exceeded.
我尝试了以下解决方案来修复我的问题
export SBT_OPTS="-Xms1024m -Xmx3084m -XX:MaxPermSize=1024m -Dhttp.netty.maxInitialLineLength=2621440"
在Mac OS中运行良好。但是当我在我的窗口中尝试相同的解决方案(更改导出到设置)和Ubuntu机器时它不起作用。我收到相同的异常消息。请帮我解决这个问题。提前致谢
答案 0 :(得分:4)
为Web套接字设置的默认缓冲区大小为" 65536"。因此,您应该在application.conf文件中增加websocket缓冲区大小。
您可以按照以下规定设置限制。
play.websocket.buffer.limit=2621440
答案 1 :(得分:2)
找到一种方法来增加WebSocket帧的最大大小。例如,在Java中,Session.manual
和Session.setMaxTextMessageBufferSize(int)
。
答案 2 :(得分:0)
就我而言,我手动创建AsyncHttpClient。所以我只是设置配置
httpClient = new DefaultAsyncHttpClient(new DefaultAsyncHttpClientConfig.Builder()
.setMaxRequestRetry(0)
.setWebSocketMaxBufferSize(1024000)
.setWebSocketMaxFrameSize(1024000).build());
如果通过Injector创建此obj,则添加
play.websocket.buffer.limit=2621440
进入application.conf。