socket.broadcast.to 不工作
Posted
技术标签:
【中文标题】socket.broadcast.to 不工作【英文标题】:socket.broadcast.to not working 【发布时间】: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() 中被贬低或未使用。
【问题讨论】:
Whats the difference between io.sockets.emit and broadcast?的可能重复 也许你需要更新节点版本,是的,“io.to”也可以,socket.io/docs/emit-cheatsheet/# 【参考方案1】:socket.broadcast.to(someRoomOrId).emit(...)
将发送到房间中的所有套接字或匹配除socket
之外的 ID。所以,如果你看到的是它没有被发送到socket
,那么这就是它应该如何工作的。
如果要发送到所有匹配的套接字,请使用:
io.to(someRoomOrId).emit(...)
相反。 socket.to()
版本专门用于排除 socket
对象本身。这是socket.to()
的一些文档:
为后续事件发射设置一个修饰符,该事件将仅广播给已加入给定房间的客户端(套接字本身被排除)。
【讨论】:
以上是关于socket.broadcast.to 不工作的主要内容,如果未能解决你的问题,请参考以下文章
socketio 中 `socket.broadcast.to(param)` 的用途是啥
br.read() 如何在读取字符串结束时给出 -1 或 br.read() 究竟是如何工作的?
Replace(Environment.NewLine, "<br/>") 在网页上显示文本时未按预期工作