socket.io的命名空间的服务器端连接

时间:2014-03-19 01:21:01

标签: node.js socket.io sails.js

正如socket.io文档所说,您可以在客户端脚本中使用此代码加入namespace

io.connect('http://localhost');

据我所知,没有提供向服务器中的namespace添加套接字的方法,但我能够向namespace添加套接字(在服务器中)使用类似于以下的代码:

socket.join('somenamespace');
io.of('somenamespace').emit('some-message', { ... });

执行第二行后,会触发connection的{​​{1}}事件。

为什么会这样?使用这种方法将套接字添加到服务器端的命名空间是否正确?

是否有正确的方法可以将套接字添加到服务器端的'somenamespace'

请注意,我正在使用namespacesocket.io 0.9.14

提前致谢。

1 个答案:

答案 0 :(得分:1)

这不是向namespaces添加套接字的正确方法。如果您在服务器中定义了名称空间:

var namespace1 = io.of('/namespace1');
namespace1.on('connection', function(socket){
  socket.emit('msg',"message"); //only the particular socket from /namespace1 will get
});
  //If you do this
namespace1.emit('msgToAll', "message"); //everyone in namespace1 will get this message

但是,房间与名称空间不同。 您可以通过以下方式从客户端连接到特定的命名空间:

io.connect('http://localhost:port/namespace');