socket.io 监听/监听事件

socket.io listen / listening event

我很惊讶地查看 socket.io 文档,发现 socket.io 在绑定到端口时没有触发任何事件...我正在寻找 "listen" / "listening" 事件...

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
};

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

类似于:

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

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

});

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

所以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)
})