2012-10-23 16 views
16

Uso lo node.js e socket.io per creare un'applicazione web in tempo reale. Darò agli utenti il ​​pieno controllo della connessione socket, come la disconnessione manuale e la (ri) connessione.Socket.io - Riconnessione manuale dopo disconnessione lato client

function socket_connect() 
{ 
    console.log('func socket_connect'); 
    socket = io.connect('http://url/to/the/app'); 
} 

function socket_reconnect() 
{ 
    console.log('func socket_reconnect'); 
    socket_connect(); 
} 

function socket_disconnect() 
{ 
    console.log('func socket_disconnect'); 
    if (socket) socket.disconnect(); 
} 

Il client avvia la funzione socket_connect() funziona bene, ma dopo aver usato socket.disconnect(), nessuna nuova connessione si avvia.

+1

Che cosa intendi con "Nessuna nuova connessione inizia"? Ciò non si ricollega automaticamente o quando l'utente seleziona socket_connect() la nuova connessione non funziona. – Martin

+0

La riconnessione automatica funziona correttamente, non è questo il problema. Vedi la mia risposta ... Problema risolto. – acc

risposta

15

Funziona ora, con socket.socket.reconnect()

function socket_connect() 
{ 
    console.log('func socket_connect'); 
    socket = io.connect('http://url/to/the/app'); 
} 

function socket_reconnect() 
{ 
    console.log('func socket_reconnect'); 
    socket.socket.reconnect(); 
} 

function socket_disconnect() 
{ 
    console.log('func socket_disconnect'); 
    if (socket) socket.disconnect(); 
} 

correlati: https://github.com/LearnBoost/socket.io-client/issues/251

16

Se stai usando Socket.io 1.0, provare a utilizzare il manager io sul socket per gestire disconnessione manuale e riconnessione.

// Connect to socket.io 
var socket = io.connect('url'); 

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

function manual_reconnect() { 
    socket.io.reconnect(); 
} 

Il reconnecting_attempt, riconnessione, eventi ricollegato e connessi dello zoccolo dovrebbero essere tutti emesse successivamente.

+2

irritantemente, socket.disconnect() è ancora disponibile in 1.x mentre socket.reconnect() non lo è. Quindi la versione di kmftzg è probabilmente la migliore –

16

È possibile riconnettersi seguendo la configurazione lato client.

// for socket.io version 1.0 
io.connect(SERVER_IP,{'forceNew':true }); 
Problemi correlati