实际上,对于我的服务器游戏,我不使用Netty。我已经为发送数据包对象创建了一个套接字多线程系统,该系统从(Int和Out)StreamBuffer序列化和反序列化。
我发现了Netty,我认为将它用于我的网络系统会更好。 我实际上创建了一个客户端和服务器处理程序(都扩展了ChannelInboundHandlerAdapter)来从ByteBuf序列化和反序列化我的数据包,它的工作很精细:)!
现在我想迁移我的身份验证系统。 实际上,我有两个Handler,LoginHandler只能接收和处理登录数据包(我发送缓冲包时由id定义),以及可以接收和处理所有其他数据包的ServerHandler。
我的问题是,用Netty重新创建这个系统的最佳方法是什么?
我不知道是否可以在管道中添加登录处理程序,如果某个通道已经过身份验证,它将不会检查它。如果其中一个处理程序拒绝该通道,我不知道该进程是如何停止的。
有人可以帮我理解用Netty做我想做的最好的方法是什么?
提前感谢您的回答。
以编程方式,beaucoralk。
答案 0 :(得分:2)
我们今天在IRC #netty上谈过:)
我的建议是:
ctx.pipeline.addAfter(this, "gameHandler", new GameLogicHandler());
ctx.pipeline.remove(this);
基本上,在成功进行身份验证后,您的LoginHandler会自行删除。重要提示:在删除旧处理程序之前添加 new 处理程序。 :)
最好的问候
答案 1 :(得分:2)
我用这个解决了我的问题:
ctx.pipeline.addLast(new GameLogicServerHandler());
ctx.pipeline.remove(this);
事实上我没有像Franz Bettag那样成功使用addAfter,没有合适的方法。
但是感谢Bettag帮助我理解#netty IRC上的许多内容。