我使用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()开始被删除或不使用。
答案 0 :(得分:0)
socket.broadcast.to(someRoomOrId).emit(...)
将发送到会议室中的所有套接字或匹配除socket
之外的ID。所以,如果您所看到的是它没有被发送到socket
,那么这应该是如何工作的。
如果要发送到所有匹配的套接字,请使用:
io.to(someRoomOrId).emit(...)
代替。 socket.to()
版本专门用于排除socket
对象本身。以下是socket.to()
的一些文档:
为后续事件发射设置一个修饰符,该事件将仅被广播到已加入给定房间的客户端(套接字本身被排除)。