jawampa最大websocket框架尺寸



发布事件时参数是否有最大大小?

我使用这个代码(java(:wampClient.publish(token, response.toString());

在我的例子中,response.toString()是一个很长的json字符串。它有大约70000个字符。我怀疑事件没有发布,因为当我用一个短字符串替换response.toString()时,事件会按预期发布。

我对Wamp的内部结构了解不多,代码中的初始调试会话也没有给我提供太多见解。正如我上面所说的,我认为长字符串造成了一些问题。

最小运行示例:要获得最小运行示例,请从这里下载示例java项目:http://we.tl/a3kj3dzJ7N并将其导入到IDE中。

在demo文件夹中有两个.java文件:Client.javaServer.java运行/启动这两个程序,并且每个程序都应显示一个GUI。然后执行以下程序(C=客户端,S=服务器(:

C: hit start
S: hit start
C: hit publish

根据消息的大小,您将在IDE的控制台上看到不同的输出。消息的大小可以通过CCD_ 7整数变量在CCD_。如上所述:如果size低于70000(例如60000(,则一切正常。Client.java的控制台输出如下:

Open Client
Session1 status changed to Connecting
Session1 status changed to Connected
Publishing
Received event test.event with value 10000

但是,如果整数变量size更改为70000(或更高(,则输出如下:

Open Client
Session1 status changed to Connecting
Session1 status changed to Connected
Publishing
Completed event test.event
Session1 status changed to Disconnected
Session1 status changed to Connecting
Session1 status changed to Connected

如您所见,接收事件丢失,因此,不会接收到该事件。然而,有已完成的事件测试。event,但数据明显丢失。

总之,当运行上面的示例时可以看到,当发送的字符串的大小大于70000时,事件没有被正确接收。这个问题可能与netty有关,因为它是在jawampa的引擎盖下使用的。感谢您的帮助。也许只是一些小配置可以解决这个问题。

第1版:我用一个可以下载的最小运行示例更新了这个问题。

第2版:我想我现在知道了问题的根源(但完全不确定,请参阅第3版(。它与java中允许的字符串文字大小有关。请参阅:java中初始化字符串的大小在上面的例子中,我可以反映这一点。如果大小变量小于65535个字符,则它有效,否则无效。有解决办法吗?

EDIT 3又名解决方案:根据开发人员的建议(请参阅此处(,NettyWampConnectionConfig.java:8中的变量DEFAULT_MAX_FRAME_PAYLOAD_LENGTH应更改为更高的值。然后一切都像一个符咒。

根据开发人员的建议(请参阅此处(,可以通过NettyWampConnectionConfig类覆盖变量DEFAULT_MAX_FRAME_PAYLOAD_LENGTH,您可以将其提供给NettyWampClientConnectorProvider类。显然,变量值应该增加。

jawampa中存在错误,原因是DEFAULT_MAX_FRAME_PAYLOAD_LENGTH比Crossbar中默认的分割帧大小低1位。因此CCD_ 16应该只增加1比特,或者交叉分割帧大小应该降低1。此外,如果更改DEFAULT_MAX_FRAME_PAYLOAD_LENGTH,则应使用构建器进行更改:.withConnectionConfiguration((new NettyWampConnectionConfig.Builder()).withMaxFramePayloadLength(65536).build())

相关内容

  • 没有找到相关文章

最新更新