Я сделал сервер с Netty, но у меня возникла проблема. Кодер, который я создал, не выполняется.Кодер Netty не выполнен
Мой трубопровод на сервере:
bootstrap.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast("encoder", new PacketEncoder());
ch.pipeline().addLast("decoder", new PacketDecoder());
ch.pipeline().addLast(new LoginServerChannel());
}
});
Мой кодировщик:
public class PacketEncoder extends MessageToByteEncoder<Packet> {
@Override
protected void encode(ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf byteBuf) throws Exception {
System.out.println("Encoding");
}
Мой декодер:
public class PacketDecoder extends ReplayingDecoder<DecoderState> {
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
...
}
Мой обработчик канала:
public class LoginServerChannel extends SimpleChannelInboundHandler<Packet> {
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, Packet packet) throws Exception {
channelHandlerContext.writeAndFlush(packet.encode());
System.out.println("Sending");
}
Вызывается декодер, а затем обработчик канала, но не кодер. Я попытался изменить порядок в конвейере, но та же проблема также пытается использовать fireChannelRead (...) и та же проблема.
Благодаря
Что делает ваш packet.encode() вернуться? – Ferrybig
@Ferrybig в этот момент ничего. Печать не выполняется. – AtuaPrimade4
Я тебя не понимаю. Он должен вернуть объект «Packet», этот пакетный объект будет передаваться далее по цепочке в кодер – Ferrybig