背景:我正在通过mina web套接字(https://issues.apache.org/jira/browse/DIRMINA-907)发送数据,它已经修补了buf问题。
我过去常常通过web套接字发送大约50个字节的json消息。有时,它会达到70个字节...
问题是:最初,IOBuffer.capacity()是2048 --> 2048 --> 1024 --> 1024 - -> 1024 -> 512 -> 512 -> 256 -> 256 -> 128 -> 128 -> 64 -> 64 -> 64 -> 64
如果json消息变为70字节。它将在messageReceived中分成两个消息(IoSession会话、对象消息)。有没有什么办法可以解决这个问题。
我可以存储不完整的消息,但它会引发另一个问题,例如2条json消息或1条有效的json消息和1条无效的json消息。
谢谢。
发布于 2016-04-03 08:42:10
我假设您正在对MINA使用TCP。当通过TCP发送大消息时,它会被分成较小的块,以适合较小的数据包。TCP确保数据包数据在到达其目的地时以正确的顺序到达。
发生的情况是,您的JSON消息在通过网络发送时被分割。即使它按顺序到达目的地,您也需要将这两个块放在一起。
MINA用户指南有一个很好的例子来说明如何做到这一点,它应该会对你有所帮助。你可以在here上找到它
发布于 2016-04-05 10:31:58
最后,我通过添加
acceptor.getSessionConfig().setMinReadBufferSize(2048);
写进我的代码。
设置最小读缓冲区,防止消息被分成两部分。我知道这不是一个完美的解决方案。但我的消息不会超过2K。
jython234建议的解决方案不适合我的需求。
https://stackoverflow.com/questions/36349308
复制相似问题