Websocket最大帧长度65536已被超过



在我的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。

相关内容

  • 没有找到相关文章

最新更新