2015-12-22 2 views
0

У меня проблема с использованием Socket.io.Событие socket.io 'connect' или 'reconnect' не запускается после повторного подключения

код прост:

var socket = null; 
var socketInit = false; //if it is true, use reconnect 

... 
function connect() { 
    if(!socketInit) { 
     socket = io(); 
     socketInit = true; 

     //attach event handlers 
     socket.on('connect', function() { 
      console.log('connect fired!'); 
     }); 
     socket.on('disconnect', function() { 
      console.log('disconnect fired!'); 
     }); 
     socket.on('reconnect', function() { 
      console.log('reconnect fired!'); 
     }); 
    } 
    else { 
     socket.io.connect(); 
    } 
} 

... 
function disconnect() { 
    socket.disconnect(); 
} 

, как вы можете видеть, есть две функции, которые соединяют или отсоединить разъем. и в функции соединения он присоединяет к сокету «подключить», «отключить», «повторно подключить» обработчики.

Сначала я назвал функцию соединения, она работает хорошо. серверная сторона также хорошо работает. и я называл функцию разъединения, также хорошо работает с сервером.

, но я позвонил снова соединять функцию, что означает «socketInit» переменная истинна, поэтому подключиться функция пытается:

socket.io.connect(); 

я проверил консоль сервера и клиента как и выглядит, как он подключен, но проблема в том, что события не уволены!

Событие «соединение» на стороне сервера было запущено при повторном подключении, но событие «подключение» или «повторное подключение» на стороне клиента не было запущено. я попытался выяснить, что происходит, но все же я не понимаю. я много раз проверял веб-консоль и серверную консоль, и само соединение работает нормально, но проблема в том, что события не работают!

Если кто-то знает дорогу, он будет очень признателен, чтобы помочь мне. спасибо;)

p.s. Я попытался добавить обработчики событий «повторно подключен», «повторно подключиться», «повторно подключиться», но не работает.

+0

Я не уверен, что вы можете сделать это так. Кто подключается к этому сокету? Если это клиент socket.io, то только клиент может повторно подключиться. –

+0

xbirkett // спасибо за комментарий. это код на стороне клиента. Я просто хочу, чтобы клиент мог подключиться/отключиться/снова подключиться в любое время, когда захочет. у вас есть лучшее предложение об этом? он будет очень благодарен за лучший способ;) – modernator

ответ

2

Если вы используете Socket.io 1.0, попробуйте использовать io-менеджер в гнезде для ручного отключения и повторного подключения.

var socket = null; 
var socketInit = false; 

function connect() { 
    if(!socketInit) { 
     socket = io(); 
     socketInit = true; 

     //attach event handlers 
     socket.on('connect', function() { 
      console.log('connect fired!'); 
     }); 
     socket.on('disconnect', function() { 
      console.log('disconnect fired!'); 
     }); 
     socket.on('reconnect', function() { 
      console.log('reconnect fired!'); 
     }); 
    } 
    else { 
     socket.io.reconnect(); 
    } 
} 


function disconnect() { 
    socket.io.disconnect(); 
} 

reconnecting_attempt, отсоединяется, переподключенные и связанные события на сокет все должны выделяться впоследствии.

+0

спасибо, Гэри! он отлично работает XD – modernator

+0

@modernator Если это было полезно, отметьте ответ и нажмите вверх. – Gary

Смежные вопросы