我必须解码:
1.Ping解码器
1.握手解码器
在PingDecoder中,我读取1个字节,如果它是PING字节,我只记录它,如果不是,我想将所有数据(用这个字节)传输到HandshakeDecoder:
public class PingDecoder extends ReplayingDecoder<Void> {
...
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
byte prefix = in.readByte();
if (prefix == PING) {
log.debug("Ping");
} else {
out.add(prefix);
out.add(in.readBytes(super.actualReadableBytes()));
}
}
}
我的问题是HandshakeDecoder获取的数据没有前缀。
1条答案
按热度按时间6yoyoihd1#
我自己找到了解决方案。我应该将前缀发送为ByteBuf,而不仅仅是byte: