需要通过websocket向其他用户而不是发件人发送消息

时间:2017-12-29 18:36:50

标签: c# websocket publish-subscribe

我在websockets上构建发布/订阅机制。我有websocket工作,但如何将消息从userA发送到userB,userC和userD(这些是订阅pub / sub的其他用户)。

我使用websocketsharp并且我有打开的会话列表,所以我尝试使用SendTo,但我无法使用它。

我只需要一个正确方向的点。

顺便说一句,我可以轻松地从userA发送到服务器,从服务器发送回用户A,但我无法找到如何转发给同时订阅的userB,userC,userD。

这是我尝试做的一小段代码:

   class DDPServer : WebSocketBehavior, IClientSession
    {
        private SessionInfo sessionInfo;
        public static WebSocketSessionManager sessionQueue { get; set; } 
        // more stuff here
    }

sessionQueue被分配了所有会话。

所以,现在我有了所有的会议。套接字服务器接收请求,通过pub / sub机制(提供订阅用户列表),现在我尝试使用以下内容发送数据:

DDPServer.sessionQueue.SendTo("test", "3d0f491cfb654dd4839337608b19f849");

其中3d0f491cfb654dd4839337608b19f849是会话ID。

1 个答案:

答案 0 :(得分:0)

WebSocketSessionManager维护打开的连接,因此使用.SendTo(“此处为字符串数据”,“此处为字符串会话ID”),我能够发送给任何其他客户端。

因此,我将订阅用户,将通道存储在数据库中的订阅用户列表中,拉出这些用户,查找与这些用户关联的会话(如果有),然后运行for循环到SendTo每次会议。