我正在尝试使用sails.js建立一个系统,让服务器向一组客户端广播消息。基本上是:
根据socket.io文档,我应该可以让B组中的客户端加入“房间”,然后将服务器广播到该特定房间,但在客户端,预先存在的“套接字”没有方法“socket.join('room')”。所以,我尝试向所有客户发送一个独特的事件:
socket.on("connect", function(){
console.log("Client Connected");
});
socket.on("my_event", function(data){
console.log("my_event received");
});
通过在服务器端执行“sails.io.sockets.emit(”my_event“,{...})”这可以正常工作,但这不是将事件发送给每个客户端吗?我可以使事件名称唯一,例如“my_event_000”,其中包含用于指定组的ID,但这仍然会不必要地向每个客户端发送事件。
我应该使用“房间”吗?如果是这样,怎么样?
答案 0 :(得分:4)
Sails执行此操作的方法是让模型支持“Groups”,并在控制器操作中使用套接字订阅具有Group.subscribe(groupId, req.socket)
的组。然后,您可以使用Group.publish(groupId, data)
向特定群组发送消息。
您还可以使用req.listen(groupId)
在控制器中订阅任意房间名称,并使用req.broadcast(roomName, data)
向该房间广播。