【发布时间】:2017-12-29 18:36:49
【问题描述】:
我正在通过 websockets 构建发布/订阅机制。我的 websocket 工作正常,但是如何将消息从 userA 发送到 userB、userC 和 userD(这些是订阅 pub/sub 的其他用户)。
我正在使用 websocketsharp,并且我有打开的会话列表,所以我尝试使用 SendTo,但无法正常工作。
我只需要一个正确的方向。
顺便说一句,我可以轻松地从 userA 发送到服务器,从服务器返回到 userA,但我不知道如何转发给同样订阅的 userB、userC、userD。
这是我正在尝试做的一个小代码sn-p:
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。
【问题讨论】:
-
发给服务端,服务端再发给客户端。
-
我可以把它发送到服务器,我可以把它发送回发送客户端,但是我如何将它转发给其他订阅的客户端?
-
你能显示一些代码来澄清一下吗?如果您可以从服务器发送/接收,我不确定我是否理解您的问题。
-
我只想转发给其他客户。 WebSocketSessionManager 中有一个 SendTo 方法,但我无法让它工作。它接受(字节数据,字符串id),这种情况下的id是什么??? session id,用户id???
-
服务器必须知道其他客户端订阅了什么,服务器使用该知识来转发消息。客户端不应该知道其他客户端订阅了什么。
标签: c# websocket publish-subscribe