我正在使用socket.io和Mean堆栈作为网络应用。我在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.on
和io.sockets.on
之间有什么区别?我应该在首次连接时使用哪一个..?
虽然socket.on npm page使用io.on
,但为什么它适用于io.sockets.on
答案 0 :(得分:13)
默认情况下,Socket.IO客户端连接的默认命名空间为:/
。
它由io.sockets
或io
(docs)标识。
此示例复制自文档:
// 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为您完成所有工作,就好像它是两个独立的实例,但仍然将信息限制为一个连接,这非常聪明。"