Node.js 尝试将socket.io消息广播到房间等所有连接的插座

Node.js 尝试将socket.io消息广播到房间等所有连接的插座,node.js,socket.io,sails.js,broadcast,Node.js,Socket.io,Sails.js,Broadcast,挑战: 我想使用SailsJS,能够通过socket.io加入一个房间,并从这个房间接收未经请求的消息,不仅是当一个人进入或离开房间时,还可以接收对象 因此,多个客户端连接到服务器。 随后,向每个房间广播(从服务器启动)消息/对象,从而向该房间中的每个连接插座广播 我可能只需要向每个连接的套接字发送一条消息,但我非常希望看到一个关于如何使用SailsJS 0.10实现这一点的示例,以及一个以SailsJS 0.10方式实现的优雅方法 我在看:,但我认为这是为了接近模型本身,例如:自动订阅:['d

挑战:

我想使用SailsJS,能够通过socket.io加入一个房间,并从这个房间接收未经请求的消息,不仅是当一个人进入或离开房间时,还可以接收对象

因此,多个客户端连接到服务器。 随后,向每个房间广播(从服务器启动)消息/对象,从而向该房间中的每个连接插座广播

我可能只需要向每个连接的套接字发送一条消息,但我非常希望看到一个关于如何使用SailsJS 0.10实现这一点的示例,以及一个以SailsJS 0.10方式实现的优雅方法

我在看:,但我认为这是为了接近模型本身,例如:自动订阅:['destroy','update']

在我看来,这应该是更松散的耦合,而不是与模型本身紧密相连

提前谢谢

I.

本示例的目的是演示当您主要关注发送有关模型的消息时,如何从套接字消息传递中省去很多麻烦。事实上,你可以用很少的后端代码在Sails中制作一个功能齐全的聊天应用程序,这让人印象深刻。对于资源丰富的pubsub不合适的情况——或者如果您只是不想使用它——Sails会在服务器上公开较低级别的方法。这些文档非常清楚它们是如何工作的

要将套接字连接到任意房间,请执行
sails.sockets.join(,)
,其中
是原始套接字(可能来自
req.socket
或套接字ID)

要向房间中的所有套接字广播消息,请执行
sails.sockets.broadcast(,)


这些以及更多的方法将在中详细介绍。

我刚刚开始介绍SailsJS,并且已经是一个大粉丝了。 我需要弄清楚这是否也适用于Heroku或其他风格的SAAS提供商,但似乎没有那么难

下面是我对SailsJS 0.10所做的后续工作:

服务器端:

io.socket.on('messageevent', function (data) {
   console.log(data);
})
使用以下内容创建控制器:

join: function (req, res) {

  if (req.isSocket === true) {

    sails.sockets.join(req.socket, 'mysecretroom');
    return res.send(200, 'joined');

  }

  return res.send(200);

},
sendToRoom: function( req, res ) {
  if (req.isSocket === true ) {
     sails.sockets.broadcast('mysecretroom', 'messageevent', {message:'Listen very carefully, I'll shall say this only once..!'});
  }
  return res.send(200);
}
客户端:

io.socket.on('messageevent', function (data) {
   console.log(data);
})
+sgress454获得1点荣誉


谢谢

我知道这几乎是事实,但需要更多的投入;):好吧哇!是否可能,甚至可能是强制性的“房间”位于像redis这样的持久性存储中,以防扩展nodejs应用程序。目前我还可以在redis中存储会话(通过一个流浪实例本地存储),并且在config/sockets.js中也有一个指向相同redis存储的关系。无论如何,我都要阅读并做更多的功课!(Y) 我用Red5(java)做了一个项目,我正在寻找一种优雅的方式来为epic应用程序使用套接字:)我不确定你在问什么:Redis;听起来你已经建立了Redis socket商店(干得好!),所以答案显然是肯定的。事实上,这有点离题了。目前正在探索可能性并确定大局。下一步是将用户绑定到套接字ID集合。但必要时,我们将创建另一个主题。谢谢你让我大开眼界!