【问题标题】:socket.broadcast.to not workingsocket.broadcast.to 不工作
【发布时间】:2018-02-15 17:24:02
【问题描述】:

我在 v2.0.3 的节点平台上使用 socket.io。

以下代码在一周前工作

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() 中被贬低或未使用。

【问题讨论】:

标签: node.js socket.io


【解决方案1】:

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

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

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

相反。 socket.to() 版本专门用于排除 socket 对象本身。这是socket.to() 的一些文档:

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

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 2016-08-08
    • 2017-10-01
    • 2019-12-18
    • 1970-01-01
    • 2015-09-06
    • 2021-01-10
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多