在我的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中运行良好。但是当我在我的windows(将export更改为set)和Ubuntu机器上尝试同样的解决方案时,它不起作用。我得到同样的异常消息。请帮我解决这个问题。提前感谢
web套接字的默认缓冲区大小设置为"65536"。所以你应该在application.conf文件中增加websocket缓冲区的大小。
您可以设置如下所示的限制。
play.websocket.buffer.limit=2621440
想办法增加WebSocket帧的最大大小。例如,在Java中,Session.setMaxTextMessageBufferSize(int)
和Session.setMaxBinaryMessageBufferSize(int)
在我的例子中,我手动创建AsyncHttpClient。所以我只需要设置config
httpClient = new DefaultAsyncHttpClient(new DefaultAsyncHttpClientConfig.Builder()
.setMaxRequestRetry(0)
.setWebSocketMaxBufferSize(1024000)
.setWebSocketMaxFrameSize(1024000).build());
如果你是通过注入器创建这个对象,那么添加
play.websocket.buffer.limit=2621440
application.conf。