【问题标题】:Netty server for many long-lived TCP connections用于许多长期 TCP 连接的 Netty 服务器
【发布时间】:2012-09-23 15:37:51
【问题描述】:

我正在将一些 TCP 服务器/客户端代码移植到 Netty。

一个问题,服务器将处理来自许多客户端的长期连接。我目前不需要也很可能不需要在批处理操作中向所有客户端广播等事情......但我只需要一个存储这些频道的地方和一个允许我有选择地向下发送通知的机制给给定一些客户端 ID 的客户端。

我的问题是 ChannelGroup 是一种可接受的机制来保存这些频道吗?当我第一次获得连接时,我会将频道 ID 和客户端 ID 存储在查找映射中,这样每当我需要通知特定客户端时,我都会查找我需要写入的频道 ID,然后从 ChannelGroup 中获取该频道并且只向该频道发送消息。

这种方法有什么问题吗?

谢谢!

【问题讨论】:

    标签: netty tcp-ip


    【解决方案1】:

    不,这似乎是合理的,尽管我只是将 Channel 与客户端 ID 一起存储,并可能将侦听器附加到 Channel#getCloseFuture() 以维护我的映射。但是,ChannelGroup 仍然很有用,尤其是在将“关联”通道作为一个单元关闭时。

    【讨论】:

    • 嘿,所以我最终扩展了 DefaultChannelGroup,这样我就可以内部化“设备 id”到“通道 id”的映射,并轻松执行 getChannelByDeviceId 之类的操作。我还没有完成连接它,但我会在完成后通知你。
    猜你喜欢
    • 2019-06-06
    • 2017-01-27
    • 2011-02-09
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多