socket.broadcast.to无法正常工作

时间:2017-09-07 05:25:40

标签: node.js socket.io

我使用socket.io作为v2.0.3的节点平台。

下面的代码在一周之前工作

socket.broadcast.to(msg.receiverID).emit('new message', { "username": msg.username, "message": msg.message, "to": msg.to, "receiverName": msg.receiverName, "senderName": msg.senderName, "dateTime": data.created });

它正在工作并将消息发送到单个receiverID。但是现在即使我没有修改以前的代码它也不起作用。但我们发现其中一个解决方案是尝试使用io对象发出如下所述的消息:

io.to(msg.to).emit('new message', { "username": msg.username, "message": msg.message, "to": msg.to, "receiverName": msg.receiverName, "senderName": msg.senderName ,"dateTime":data.created});

为什么这个冲突是socket.broadcast.to()从io.to()开始被删除或不使用。

1 个答案:

答案 0 :(得分:0)

socket.broadcast.to(someRoomOrId).emit(...)将发送到会议室中的所有套接字或匹配除socket之外的ID。所以,如果您所看到的是它没有被发送到socket,那么这应该是如何工作的。

如果要发送到所有匹配的套接字,请使用:

io.to(someRoomOrId).emit(...)

代替。 socket.to()版本专门用于排除socket对象本身。以下是socket.to()的一些文档:

  

为后续事件发射设置一个修饰符,该事件将仅被广播到已加入给定房间的客户端(套接字本身被排除)。