编辑页面

.broadcast()

将消息广播到房间中的所有套接字(或特定套接字)。

sails.sockets.broadcast(roomNames, data);

或者

用法

#
参数 类型 细节
1 roomNames String, Array 要广播消息的房间名称(一个或多个)(参见 sails.sockets.join)。 要广播到单个套接字,请使用它们的 ID 作为房间名称。
2 eventName String? 可选。 客户端用来识别此消息的事件的唯一名称。 默认值为 'message'
3 data JSON 要发送的消息数据。
4 socketToOmit req? 可选。 如果提供,则属于指定套接字请求的套接字将 *不会* 接收消息。 如果您从客户端触发广播,但不想让该客户端自己接收消息,这很有用(例如,在聊天室中向其他所有人发送消息)。

示例

#

在服务器上的操作、服务或任意脚本中

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

是否缺少内容?

如果您发现我们遗漏了某些内容或可以改进的内容,请遵循 此链接 并向 sails 存储库提交拉取请求。 我们合并后,下次网站部署时,更改将反映在网站上。

参考

参考