Netty 4.x怎么处理多个protobuf协议?

End_x 2014-11-09 04:53:14

protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
//解码用
p.addLast("frameDecoder", new ProtobufVarint32FrameDecoder());
//构造函数传递要解码成的类型 这里如果再有一个LocalDates的话应该怎么处理
p.addLast("protobufDecoder", new ProtobufDecoder(LocalTimeProtocol.LocalTimes.getDefaultInstance()));
//编码用
p.addLast("frameEncoder", new ProtobufVarint32LengthFieldPrepender());
p.addLast("protobufEncoder", new ProtobufEncoder());
//业务逻辑用 这里如果再有一个LocalDateClientHandler的话应该怎么处理
p.addLast("handler", new LocalTimeClientHandler());
}

希望给出的方案不是

if (arg1 instanceof Localtime){}
else if (arg1 instancdof LocalDate){}

因为实体太多!
目前的想法时根据接收过来的arg1定义一个ID,根据ID调用相应的ProtobufDecoder;下面的Handler也一样。但是由于刚接触Netty不熟,所以特来求助。
查找方案中有看到一遍相似的文章:http://www.cnblogs.com/Solstice/archive/2011/04/03/2004458.html
想法可能不成熟,希望各位踢教!
麻烦各位最好给出Demo或者有类似实现的开源项目地址的,多谢!
...全文
554 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
_海王星 2016-11-21
  • 打赏
  • 举报
回复
protobuf 使用oneof
imlulin 2016-01-07
  • 打赏
  • 举报
回复
引用 2 楼 DEMONU 的回复:
我知道,而且方案很多
你真是个SB 不想说话就不说 知道不说出来就是放屁
sdfdsfsfxxx 2015-08-05
  • 打赏
  • 举报
回复
我知道,而且方案很多
End_x 2014-11-11
  • 打赏
  • 举报
回复
自己顶六个字!

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧