我做了一个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字节。
答案 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。