【问题标题】:Sails.js + socket.io: Sending messages from server to clientsSails.js + socket.io:从服务器向客户端发送消息
【发布时间】:2013-09-09 23:42:42
【问题描述】:

我正在尝试使用sails.js 建立一个系统,让服务器将消息广播到一组客户端。基本上:

  1. A 组中的客户端向服务器发送 AJAX 请求。
  2. 服务器处理请求并通过套接字向B组的所有客户端发送消息。
  3. B 组的客户端通过套接字接收消息并显示一些东西。

根据 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 来指定组,但这仍然会不必要地向每个客户端发送事件。

我应该使用“房间”吗?如果有,怎么做?

【问题讨论】:

    标签: node.js sockets sails.js


    【解决方案1】:

    Sails 的方法是让模型支持您的“组”,并在控制器操作中让套接字订阅具有Group.subscribe(groupId, req.socket) 的组。然后您可以使用Group.publish(groupId, data) 向特定群组发送消息。

    您还可以使用req.listen(groupId) 在控制器中订阅任意房间名称,并使用req.broadcast(roomName, data) 向该房间广播。

    这一切都在Sails documentation for working with Sockets

    【讨论】:

    • 您能否提供更具体的示例。更多的代码会很有用。似乎在提供的链接中找不到 Group 事物。
    • Group 是示例中模型的名称。在文档中,它们被列为 Model.subscribeModel.publish 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 2021-10-10
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多