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
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
grazie per la risposta, mostrerà in un minuto – onar
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