骆驼netty4消息1024截断..我可以解决它吗?

时间:2017-07-04 09:44:11

标签: apache-camel netty

我做了一个camel netty4服务器程序。客户端发送了1119字节的消息,但我的解码器截断了1024/95

这是我的代码。

@ChannelHandler.Sharable
    public static class BytesDecoder extends MessageToMessageDecoder<ByteBuf> {

        @Override
        protected void decode(ChannelHandlerContext ctx, ByteBuf msg, List<Object> out) throws Exception {
                    System.out.println("BytesDecoder readableBytes:"+msg.readableBytes());
            if (msg.isReadable()) {
                byte[] bytes = new byte[msg.readableBytes()];
                int readerIndex = msg.readerIndex();
                msg.getBytes(readerIndex, bytes);
                out.add(bytes);
            }
        }

    }

结果===&gt;

BytesDecoder readableBytes:1024

BytesDecoder readableBytes:95

我希望得到一个完整的消息字节1119字节。

1 个答案:

答案 0 :(得分:0)

其实我已经在netty邮件列表上回复了这个问题。

无法保证您将在一次通话中收到所有数据。因此,您需要通过扩展.welcomeArea{ margin-top: 70px; max-height: 98px; height: 98px; background-color: #293847; } .welcomeAreaContent{ line-height: 98px; color: white; margin-left: 5%; margin-right: 5%; } .welcomeAreaContent > span { display:inline-block; } .welcomeAreaContent .welcomeName{ font-weight: bold; font-size: 1.7em; } .verticalLine { border-left: thick solid #ff0000; content: ""; } .circle { width: 50px; height: 50px; border-radius: 50%; behavior: url(PIE.htc); -moz-border-radius: 50px; -webkit-border-radius: 50px; border-radius: 50px; margin-left: 32px; display: inline-block; } .twittericon{ background: url('data:image/png;base64,...') no-repeat center; background-color: white; background-size: cover; }来解释这一点,并且只有在至少1024个可读时才读取字节。

有关更多示例和详细信息,请参阅<div class="welcomeArea"> <div class="welcomeAreaContent"> <div class="welcomeName"> TEXT TEXT <span class ="circle twittericon"></span> </div> <div class="verticalLine"> </div> </div> </div>的javadoc。