io.on(' connection',...)vs io.sockets.on(' connection',...)

时间:2014-06-17 14:50:23

标签: node.js sockets express mean-stack

我正在使用socket.ioMean堆栈作为网络应用。我在3006端口启动了socket的服务器..

var http = require('http').createServer(app);
http.listen(3006);
var io = require('socket.io').listen(http);

这两个似乎都适用于连接。

io.on('connection', function (socket) {
    console.log('Socket succesfully connected with id: '+socket.id);
});

和...

io.sockets.on('connection', function (socket) {
   console.log('Socket succesfully connected with id: '+socket.id);
});

io.onio.sockets.on之间有什么区别?我应该在首次连接时使用哪一个..?

虽然socket.on npm page使用io.on,但为什么它适用于io.sockets.on

1 个答案:

答案 0 :(得分:13)

默认情况下,Socket.IO客户端连接的默认命名空间为:/。 它由io.socketsiodocs)标识。

此示例复制自文档:

// the following two will emit to all the sockets connected to `/`

io.sockets.emit('hi', 'everyone');

io.emit('hi', 'everyone');           // short form

我认为' on'是一样的,因为它是用于' emit':使用' io.sockets'相当于使用' io'只是,它只是一种较短的形式。

对套接字进行“命名空间”,意味着分配不同的端点或路径(这可能很有用)。

回答这个SO question

" Socket.io为您完成所有工作,就好像它是两个独立的实例,但仍然将信息限制为一个连接,这非常聪明。"