如何向与Socket.IO连接的所有用户发出整个功能?

时间:2015-08-07 16:44:02

标签: node.js socket.io

我想知道所有用户可以使用Socket.io同时查看函数(例如,当您单击按钮时创建一个随机数)。我不知道。

1 个答案:

答案 0 :(得分:0)

不完全清楚你在问什么,但根据你的评论,我会做出猜测。由于您是StackOverflow的新手,因此最好使用"编辑"在您的问题下方链接以澄清您的问题。不要仅在评论中提供澄清信息。你的问题需要自己清楚,因为许多人不会阅读整个评论链。

所以,听起来你想要做的就是让某个客户端的用户按下按钮并按下该按钮触发所有其他连接客户端的动作。这是socket.io连接的经典用例。

从概念上讲,这就是它的工作原理:

  1. 加载页面时,请创建与服务器的socket.io连接。
  2. 在客户端创建一个事件处理程序,以检测浏览器中的特定事件(在您的情况下,它听起来像按钮)。
  3. 您还可以为从服务器发送的移动事件创建socket.io事件处理程序。
  4. 当该事件触发时,您通过socket.io连接向服务器发送自定义消息。浏览器中的代码可能类似于io.emit("move", someData);
  5. 在您的服务器中,您有"move"事件的消息处理程序。
  6. 当服务器收到该消息时,它会通过使用不同的消息进行广播,将该消息中继到所有其他连接的客户端。例如,它可能会socket.broadcast.emit("moveRelay", someData);。您可以看到广播here的服务器文档。这将向所有连接的客户端发送相同的事件(发起事件的客户端除外)。
  7. 返回所有其他网页的客户端,您的"moveRelay"事件处理程序将被调用,然后您可以使用代码检查数据并在每个连接的浏览器网页中相应地执行操作。