写在前面
就这个Netty实现多协议,找了一些资料,真的都是含糊不清,甚至都是错的,真的很误导别人的,但其实实现这个很简单的。
要点
写个SelectDecode的类,用于区分来的数据是什么格式
你需要做的
- 写好2套编码解码的encoder 和 decoder
- 写好2种协议的handler
- 写个Selcet Code的类,继承ByteToMessageDecoder,重写decode,在decode里判断协议,然后pipeline.addLast()相应的东西,最后最后记住要pipeline.remove(this);
- 在启动类里, 重写 initChannel,channel.pipeline().addLast(new SelectDecode());