2015-01-07 13 views
5

W blogu socket.io mówi, że w wersji 1.2.1socket.io 1.2.1 Jak naprawić podwójne zdarzenia po podłącz

„poprawki README w celu zapobieżenia podwójnemu wydarzenia na przykład po ponownym podłączeniu [@nkzawa ] "

Pobrałem wersję 1.2.1 dla klienta & serwer, ale po ponownym połączeniu nadal wywołuje on zdarzenia dwa razy. Czy powinienem coś zrobić z plikiem readme?

Próbowałem w ten sposób ponownie się połączyć i zadziałało, ale czy mogę go użyć do produkcji. Czy to jest prawdziwa droga?

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

Jak powiedziałem, czy to prawda, czy ma minusy?

UPDATE kod

kodowy serwer

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

kodowy klient

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 

i serwer odbiera "client_emit" zdarzenie Dodano dwa razy

+0

Problem jest prawdopodobnie w kodzie, który tworzy swoje obsługi zdarzeń komunikat. Musisz upewnić się, że tylko raz wywołujesz ten kod RAZU lub usuwasz procedury obsługi zdarzeń przed uruchomieniem nowych. Pokaż nam ten kod. – jfriend00

+0

dziękuję za odpowiedź, pokaże się w minutę – onar

+0

Sir poprawiam kod, aby uczynić zrozumiałym, to będzie za 2-3 minuty. podczas gdy mógłbyś napisać swoją opinię na temat drugiej metody: najpierw rozłącz, usuń obiekt gniazda ren connect ponownie. Mogę to użyć? – onar

Odpowiedz

6

Roztwór jest:

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

zmiana

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

Aby uzyskać więcej informacji przeczytaj issue on github

+0

Wooooooowww, thnx dużo !! ta praca dla mnie –