gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:21:21 26 4
gpt4 key购买 nike

我有一个新项目,我将第一次使用 Netty (v4.0.4)。我将拥有一个拥有数万个连接客户端的服务器。服务器将向这些客户端发送命令并应该接收响应。

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

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

子类化 Channel 来封装此逻辑是个好主意吗?或者我应该使用某种类型的 session 存储并将逻辑放入入站 channel 处理程序中?

我确信这些方法会起作用,但它们看起来有点尴尬,我想确保我以网络方式做事。

谢谢!

最佳答案

要调度事件(例如超时),您可以访问 ChannelHandlerContext 的 EventExecutor,以使用 Netty 使用的相同线程池来调度任何任务。或者,您可以使用 ReadTimeoutHandler来管理超时。当发送命令时,需要将 ReadTimeoutHandler 添加到 channel 的管道中,并在收到响应时将其删除。

每连接数据或 session 数据很容易被 netty 作为 ChannelHandler 对象的成员变量处理。在使用共享 ChannelHander 的情况下,还有一种使用附件将这些数据存储在 ChannelHanderContext 中的方法。这两种方法都记录在 ChannelHandler 中界面。

这些是我对自己问题的回答,欢迎评论或更好的答案。

关于netty - 代表连接到 netty 服务器的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com