给特定用户的 Websocket 消息

Posted

技术标签:

【中文标题】给特定用户的 Websocket 消息【英文标题】:Websocket message to specific user 【发布时间】:2013-01-29 21:20:20 【问题描述】:

我是 .NET (C#) 和 websockets 的新手...我已经安装了 VS2012 和 Windows Server 2012,并且已经启动并运行了 websockets。我似乎不能做的是从一个套接字接收消息并将其发送到另一个特定的套接字。唯一的选择似乎是将消息广播到所有套接字。有没有办法将消息仅针对特定用户?我希望聊天室版主有机会拒绝不适当的帖子。

【问题讨论】:

假设您在服务器端脚本的数组中拥有所有客户端(即套接字对象),为什么不直接遍历数组并使用 if 语句或类似逻辑来限制您发送的客户端信息到? 一旦我找到特定的客户端,我正在寻找仅向该客户端发送消息的方法是什么?我在 MS Server 2012 中看到的唯一方法是“Broadcast()”,它发送到整个集合。还有其他方法吗? 我使用 php 作为我的服务器端语言,所以我无法为您提供确切的代码,但我想 MS Server 2012 具有通过指定套接字发送数据的特定功能。我会查看 MS Server 2012 套接字参考以获取详细信息,并找到允许您沿指定套接字发送数据的函数。这应该可以让你到达那里。 哈特利,感谢您的帮助。如果有将消息发送到仅一个套接字的功能,我还没有找到它。我解决问题的方法是创建多个集合(在某些情况下只有一个成员),然后向集合中的“所有”成员广播。丑陋,但它的工作原理。再次感谢 与此相关:***.com/a/15474698/39904 使用 PubSub 层并考虑身份验证。在这种情况下,我也会考虑查看signalr.net 【参考方案1】:

推荐的方法是设置某种路由方案,以确保可以将消息传递给特定用户。例如。 Pubnub 使用通道进行消息路由。为了防止与服务器的多个连接,您可以考虑将服务器端的通道多路复用到单个套接字中。

要实施审核,您需要记住一些额外的挑战;考虑将传入消息放入审核队列以供批准。像ZeroMQ 或RabbitMQ 这样的消息队列可以解决这个问题。主持人将从队列中拉出消息,然后批准消息进行最终广播,或者拒绝(将消息丢弃在地板上)。

【讨论】:

以上是关于给特定用户的 Websocket 消息的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Websocket 上向特定用户发送消息

.net websocket 如何发送消息给特定的客户端

运行多线程JMeter websocket插件时消息未分配给特定线程

基于“广播”或“房间”的 Websocket 策略

Python在tkinter中发送websocket消息

如何在 websocket 服务器上向特定用户发送消息