2

背景

我希望维护一个连接通道的服务器端注册表,但我还需要这个注册表通过一个众所周知的名称/ID 进行 KEY-ed - 每个连接的通道都是唯一的。

因此,我将使用字符串 id 作为每个连接通道的键 - (即客户端和服务器都知道它,但它不会是 GUID)。

当客户端连接并调用服务器端处理程序的 channelActive 方法时,我想从 ChannelHandlerContext 中提取此 Channel ID并存储此 (ID, Channel) 对。

当通道断开连接时 - 无论是客户端还是某些故障,我将从地图中删除 (ID, Channel) 对。

问题

有没有办法在客户端 Connect 调用中传递此应用程序数据,以便服务器端处理程序可以在其 channelActive 方法中读取它?

我只能在“连接时”执行此操作吗?我想避免将此逻辑添加到实际的消息处理中,因为这纯粹是为了通道连接/断开识别。

谢谢

4

1 回答 1

0

经过一些带外讨论后,我更好地理解连接仅用于建立端点之间的物理连接。直到 Channel 上的第一次写入发生,管道中的各种处理程序才被构造/使用。

因此,我将把它构建到我们的消息处理层中——使用客户端通道的 channelActive 方法来处理进行 1 次注册调用。

于 2013-03-22T13:38:29.810 回答