Websocket最大帧长度已超过65536

时间:2015-10-20 10:13:45

标签: scala jboss websocket base64

在我的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机器时它不起作用。我收到相同的异常消息。请帮我解决这个问题。提前致谢

3 个答案:

答案 0 :(得分:4)

为Web套接字设置的默认缓冲区大小为" 65536"。因此,您应该在application.conf文件中增加websocket缓冲区大小。

您可以按照以下规定设置限制。

play.websocket.buffer.limit=2621440

答案 1 :(得分:2)

找到一种方法来增加WebSocket帧的最大大小。例如,在Java中,Session.manualSession.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。