【问题标题】:io.on('connection',...) vs io.sockets.on('connection',...)io.on('connection',...) 与 io.sockets.on('connection',...)
【发布时间】:2014-08-07 15:34:09
【问题描述】:

我正在将socket.ioMean 堆栈用于Web 应用程序。我在 3006 端口上启动了套接字服务器..

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 有效

【问题讨论】:

  • 不是 100%,但我认为这只是一个别名。与io.sockets.emitio.emit 一样,见here
  • @Ben Fortune 很好,当我同时拥有它们时,它们都被执行了..两次使用 io.on('connection',...) 是错误的.. ?

标签: node.js sockets express mean-stack


【解决方案1】:

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 为您完成所有工作,就好像它是两个独立的实例一样,但仍将信息限制在一个连接中,这非常聪明。”

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 2016-01-23
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2022-12-02
    相关资源
    最近更新 更多