gpt4 book ai didi

node.js - 发出事件时,数据是仅到达监听器还是所有客户端?

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:05 25 4
gpt4 key购买 nike

我添加了两个插图来解释问题。

那么,有真实的例证吗?如果是这样,哪一个是正确的?

插图 1

enter image description here

插图 2

enter image description here

最佳答案

io.emit(msg, data) 从服务器发送到连接到该服务器的所有客户端。客户端是否正在监听该 msg 并不重要。数据被发送到客户端,如果客户端有该 msg 的监听器,则将调用该 msg 的事件监听器。

如果客户端没有该消息的监听器,则消息将到达,但没有监听器。在这一点上,它就像任何没有监听器的事件一样。事件已触发,但如果没有监听器,则回调队列为空,因此没有要调用的事件处理程序。

我不太明白你的两个图之间的预期区别,但第一个图正确显示了 data 被发送到所有三个客户端。第二张图没有显示,所以它是不正确的。

请记住,发送的不仅仅是数据。消息名称也与数据一起发送。这就是接收客户端知道要为其触发哪些事件处理程序的方式。


您可以将客户端想象成这样。

  1. 这是一条传入消息。
  2. 我是否有该消息的监听器?
  3. 如果是,调用监听器。
  4. 如果不是,请忽略该消息。

在服务器端,您可以选择发送消息的方式来确定发送给谁:

io.emit() 发送给所有连接的客户端。

socket.emit() 只发送到那个特定的客户端套接字。

socket.broadcast.emit() 发送到所有已连接的客户端,但 socket 代表的客户端除外。

socket.to(room).emit() 发送到那个房间里的客户端。

io.of('chat').emit() 发送到连接到该命名空间的客户端。

关于node.js - 发出事件时,数据是仅到达监听器还是所有客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com