我有一个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;
});
问题是,在调用重新连接事件之后,永远不会再次调用任何其他事件。特别是"断开"重新连接之后永远不会调用事件,这对我很重要。
答案 0 :(得分:1)
如果您希望保持注册而不是重新注册,请使用socket.on( "disconnect", function () {...
。
你正在使用.once
,暗示它只会被调用一次。
https://nodejs.org/api/events.html#events_emitter_once_event_listener
emitter.once(event,listener)
为事件添加一次性侦听器。只有在下次触发事件时才会调用此侦听器,之后将其删除。