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
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
dziękuję za odpowiedź, pokaże się w minutę – onar
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