代表连接到Netty服务器的客户端

3

我有一个新项目,将首次使用Netty(v4.0.4)。我会有一个服务器与成千上万的已连接客户端。服务器将向这些客户端发送命令,并应收到响应。

查看API和在线示例,我不确定如何从服务器的角度对客户端进行建模。我已将我的通道组织成不同的ChannelGroup,并且可以很好地发送命令。

我需要知道命令是否超时或返回错误代码。我可能还需要为每个客户端维护一个命令队列。我应该使用ScheduledExecutorService为每个命令设置超时处理程序,然后在响应到来时取消Future吗?

是否应该子类化Channel以封装此逻辑?还是应该使用某种类型的会话存储并将逻辑放在我的入站通道处理程序中?

我相信这些方法可以发挥作用,但它们似乎有些笨拙,我想确保自己按照netty的方式操作。

谢谢!

1个回答

2
要安排事件(例如超时),您可以访问ChannelHandlerContext的EventExecutor,使用与Netty相同的线程池来安排任何任务。 或者,您可以使用ReadTimeoutHandler来管理超时。 当发送命令时,需要将ReadTimeoutHandler添加到通道的管道中,并在接收到响应时将其删除。
每个连接的数据或会话数据可以轻松地作为ChannelHandler对象的成员变量处理。 在使用共享ChannelHander的情况下,还可以使用附件将这些数据存储在ChannelHanderContext中。 这两种方法都记录在ChannelHandler接口中。
这些是我对自己问题的答案,欢迎评论或更好的答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接