dotnetty多个websocket客户端发送消息,仅一个接收成功

private static Dictionary<string, IChannelHandlerContext> websocketClients = new Dictionary<string, IChannelHandlerContext>();

上面是定义的一个字典用于保存创建websocket连接的客户端。

同时创建了一个Socket连接,用于接收发送给websocket客户端的信息。Socket连接创建之后,启动一个线程,等待socket服务端的消息推送。

接收到推送消息之后,会往websocketClients里的每一个websocket客户端发送消息。

这样子实现,逻辑上看来没有问题。但是调试发现,我在同一台电脑上的,两个浏览器打开,分别创建了2个websocket连接,再用另外一个电脑的浏览器打开创建了一个websocket.

循环往这3个websocket客户端发送消息(写入方法:IChannelHandlerContext.WriteAndFlushAsync)后,只有其中一个客户端能接收到消息。

不知道大家有没有碰到过这种问题呢。

回答

调试了半天,搞定了。碰到这种需要多播的需求,需要通过IChannelGroup来实现。

对于开始尝试的IChannelHandlerContext,循环发送为何不行。可能只适用于单播的场景,但是还是很迷蒙,有空了再研究一下。

以上是dotnetty多个websocket客户端发送消息,仅一个接收成功的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>