【问题标题】:socket.io listen / listening eventsocket.io 监听/监听事件
【发布时间】:2016-01-21 02:35:25
【问题描述】:

我很惊讶地看到socket.io 文档,当 socket.io 绑定到一个端口时,它没有触发任何事件......我正在寻找一个“监听”/“监听”事件...... .

http://socket.io/docs/server-api/

我有一个用 http.Server 实例初始化的简单模块:

var io = require('socket.io');

var socketServer = null;

function getSocketServer(httpServer) {

    if (socketServer === null) {

        if (httpServer == null) {
            throw new Error('need to init socketServer with http.Server instance');
        }

        socketServer = io.listen(httpServer);
    }

    return socketServer;

}


module.exports = {
    getSocketServer:getSocketServer
};

当我需要这个模块时,我想监听一个“监听”事件。

类似:

var socket = require('./socket-cnx').getSocketServer();

socket.on('listening',function(err){

});

我想主要原因是因为on API 用于事件名称。

【问题讨论】:

  • 为什么要在已经在轨的航天飞机上监听“igniteEngine”事件?考虑到您示例中的 socket调用 io.listen() 的结果,我认为假设它已经在监听是安全的。
  • @mcmillan 这没有意义...http.Server 有一个监听功能和 on('listening') 事件...
  • @mcmillan,在工程界,我很确定如果你触发“ignite-engine”调用,监听“engine is ignited”事件绝不是多余的。总会有错误发生在某处,越早发现越好……您可以在下面看到来自 Peter Lyons 的一些信息,这些信息可能会回答一些问题
  • 是的,但是getSocketServer() 没有返回http.Server,是吗?
  • 它正在返回是的......里昂的答案是正确的

标签: node.js socket.io


【解决方案1】:

所以 socket.io 本身不听。 http 服务器进行侦听,该对象将发出 listening 事件。

如果您允许 socket.io 为您创建 http 服务器实例,该实例将作为 httpServer property of your io instance 发布,因此您应该能够执行 io.httpServer.on('listening', myOnListeningHandler)

这是一个工作示例程序:

var io = require('socket.io')(4001)

io.httpServer.on('listening', function () {
  console.log('listening on port', io.httpServer.address().port)
})

【讨论】:

  • 好的,谢谢,但是如果我使用 require('socket.io')(4000),其中端口 4000 与我的 http 服务器的端口不同,该怎么办?那么我怎样才能监听那个监听事件呢?我确实意识到我刚才提到的代码创建了一个新的 http.Server 实例,但是我怎样才能监听那个新服务器的事件呢?对吗?
  • 通过源代码链接更新答案以解决这种情况。
  • 干杯这是很酷的东西谢谢你的帮助。这让我想知道为什么 socket.io 与 httpServer 有任何关系,但我想这就是我阅读更多内容的地方。
  • 这也让我想知道绑定到与主 httpServer 相同的端口(使用 io.listen(server) )或通过 new require('socket.io 创建一个新端口的优点/缺点')()
  • 对。 Web 套接字中的“web”表示 HTTP。 socket.io 可以与最初在 http 上运行的 web 套接字通信,然后将协议更改为 websocket 协议,但它也可以在 ajax HTTP 长轮询和其他一些传输上运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多