重新连接后,在socket.io-client中重新注册事件

时间:2015-05-29 18:32:15

标签: node.js sockets socket.io

我有一个socket.io-client应用程序,如下所示:

var port = 1234;
var host = "http://host.com";

var ioc = require( 'socket.io-client' );
var isConnected = false;

var socket;

connect();

function connect() {
    socket = ioc.connect( host + ":" + port);
}

socket.once( "connect", function () {
    isConnected = true;
    console.log( 'Client: Connected to port ' + port );

    socket.emit( "status message", "Hello Server", function ( message ) {
        console.log( 'Echo received: ', message );
    });
});

socket.once( "disconnect", function () {

    isConnected = false;
    console.log( '[ALERT]: Disconnected from Server (' + host + ":" + port + ')! ');
});

socket.on("reconnect", function(){
    console.log('Reconntected');
    isConnected = true;
});

问题是,在调用重新连接事件之后,永远不会再次调用任何其他事件。特别是"断开"重新连接之后永远不会调用事件,这对我很重要。

1 个答案:

答案 0 :(得分:1)

如果您希望保持注册而不是重新注册,请使用socket.on( "disconnect", function () {...

你正在使用.once,暗示它只会被调用一次。

https://nodejs.org/api/events.html#events_emitter_once_event_listener

  

emitter.once(event,listener)

     

为事件添加一次性侦听器。只有在下次触发事件时才会调用此侦听器,之后将其删除。