.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)的东西。