Netty问题总结

来源:互联网 发布:手机截图软件下载 编辑:程序博客网 时间:2024/05/23 17:20

1. 在handler中的messageReceived方法里,使用super.handleUpstream(ChannelHandlerContext, MessageEvent);需要注意会产生死循环

2.  Netty中的消息传递,都必须以字节的形式,以ChannelBuffer为载体传递。简单的说,就是你想直接写个字符串过去,对不起,抛异常。虽然,Netty定义的writer的接口参数是Object的,这可能也是会给新上手的朋友容易造成误会的地方。Netty源码中,是这样判断的:

SendBuffer acquire(Object message) {        if (message instanceof ChannelBuffer) {            return acquire((ChannelBuffer) message);        } else if (message instanceof FileRegion) {            return acquire((FileRegion) message);        }         throw new IllegalArgumentException(                "unsupported message type: " + message.getClass());    }

因此要发送消息的写法为:

 ChannelBuffer buffer = ChannelBuffers.buffer(msg.length()*2); buffer.writeBytes(msg.getBytes()); e.getChannel().write(buffer);