2015-01-07 11 views
5

Nel blog di socket.io dice, che nella versione 1.2.1socket.io 1.2.1 Come risolvere doppi eventi dopo ricollegare

"correzioni README per evitare doppi eventi nel esempio su riconnessione [@nkzawa ] "

Ho scaricato la versione 1.2.1 per il client & server, ma dopo la riconnessione, chiama ancora gli eventi due volte. Oppure dovrei fare qualcosa con il file readme?

Ho provato in questo modo a riconnettersi e ha funzionato, ma posso usarlo per la produzione. È un modo giusto?

socket.disconnect() 
// remove socket object 
socket = undefined 
// connect again 
socket = io.connect({'forceNew':true}) 

Come ho detto è giusto o ci sono contro?

UPDATE, codice

codice lato server

socket.on('client_emited', function(data){ 
    socketIO.to('this socket id').emit('server_emitted'); 
}) 

codice lato client

var socket; 
function connectSocket() { 
    if (!socket) 
    socket = io({'forceNew':true}); 
    else 
    socket.connect(); 
} 
socket.on('connect', function(){ 
    console.log('CONNECTED TO SOCKET.IO SERVER. SENDING "client_emited" EVENT'); 
    socket.emit('client_emited'); 
}); 
socket.on('server_emited', function(){ 
    console.log('RECEIVED "server_emited" EVENT'); 
}); 
socket.connect(); // here console shows 'CONNECTED TO SOCK...' and 'RECEIVED "server_e...' 1 time 
socket.disconnect(); 
socket.connect(); // here console shows 'CONNECTED TO SOCK...' 2 times and 'RECEIVED "server_e...' 4 times time 

e il server riceve evento "client_emit" aggiunti due volte

+0

Il problema è probabile che nel codice che crea i tuoi gestori di eventi messaggio. Devi assicurarti di chiamare questo codice una sola volta o di rimuovere i gestori di eventi prima di avviarne di nuovi. Per favore mostraci quel codice – jfriend00

+0

grazie per la risposta, mostrerà in un minuto – onar

+0

Signore sto correggendo il codice per rendere comprensibile, sarà in 2-3 minuti. mentre potresti scrivere la tua opinione sul secondo metodo: prima di tutto, rimuovi nuovamente l'oggetto socket ren connect. Posso usarlo? – onar

risposta

6

La soluzione è:

socket.on('connect', function(){....}); 

modifica

socket.once('connect', function(){....}); 

Per ulteriori informazioni leggere il issue on github

+0

Wooooooowww, thnx molto !! questo lavoro per me –

Problemi correlati