.broadcast()
将消息广播到房间中的所有套接字(或特定套接字)。
sails.sockets.broadcast(roomNames, data);
或者
sails.sockets.broadcast(roomNames, eventName, data);
sails.sockets.broadcast(roomNames, data, socketToOmit);
sails.sockets.broadcast(roomNames, eventName, data, socketToOmit);
参数 | 类型 | 细节 | |
---|---|---|---|
1 | roomNames | 要广播消息的房间名称(一个或多个)(参见 sails.sockets.join)。 要广播到单个套接字,请使用它们的 ID 作为房间名称。 | |
2 | eventName | 可选。 客户端用来识别此消息的事件的唯一名称。 默认值为 'message' 。 |
|
3 | data | 要发送的消息数据。 | |
4 | socketToOmit | 可选。 如果提供,则属于指定套接字请求的套接字将 *不会* 接收消息。 如果您从客户端触发广播,但不想让该客户端自己接收消息,这很有用(例如,在聊天室中向其他所有人发送消息)。 |
在服务器上的操作、服务或任意脚本中
sails.sockets.broadcast('artsAndEntertainment', { greeting: 'Hola!' });
在客户端上
io.socket.on('message', function (data){
console.log(data.greeting);
});
更多 sails.sockets.brodcast()
用法示例 在这里,包括广播到多个房间、使用自定义事件名称以及省略请求的套接字。
sails.sockets.broadcast()
或多或少等同于 Socket.IO 中.emit()
和.broadcast()
的功能。- 每个套接字都自动订阅到一个房间,该房间的名称为套接字的 ID,允许通过
sails.sockets.broadcast()
直接向套接字发送消息。- 在将
req
作为socketToOmit
传递之前,请务必检查req.isSocket === true
。 为了省略请求的套接字,请求 (req
) 必须来自套接字请求,而不仅仅是任何旧的 HTTP 请求。data
必须是 JSON 可序列化的; 也就是说,最好使用简单的字典/数组,并确保您的数据不包含任何循环引用。 如果您不确定,请手动构建广播data
,或者在上面调用类似rttc.dehydrate(data,true,true)
的东西。