2012-03-12 15 views
6

Zbudowałem prostą aplikację internetową, która wykonuje pewną komunikację za pośrednictwem serwera node.js za pomocą socket.io.Czy socket.io ponownie łączy się ponownie uruchomić connect?

Po połączeniu użytkownika węzeł odsyła informacje, które informują klienta o zasubskrybowaniu określonych zdarzeń. To działa dobrze.

Jeśli jednak zezwolisz przeglądarce na bezczynność, klient dwukrotnie zasubskrybuje zdarzenia. Proces subskrypcji działa tak:

Kiedy użytkownik łączy node.js dostaje wiadomość

Dwie najważniejsze rzeczy, które hapen z tą funkcją „adduser” są to:

socket.on('adduser', function(data) 
    <snip> 
    socket.emit('nodeinfo', {node_id: NODE_ID}); 
    socket.emit('update', {msg: 'you are connected'}); 

gniazda. emit ("nodeinfo") sygnalizuje klientowi subskrypcję zdarzeń.

więc klient ma

socket.on('nodeinfo', function(data) { ... } 

Chodzi o to, że nigdy nie powiedzieć „jesteś połączony” dwa razy, żaden z console.log() funkcje w „adduser” nazywa się ponownie po stronie węzła. Wydaje się, że jedyną rzeczą, która się wydarzy, jest to, że node.js emituje ponownie nodeinfo (tak myśli klient), co powoduje, że klient ponownie subskrybuje.

Czy ktoś może mi wyjaśnić, jak ponownie się łączy w działaniu socket.io i jak to się może stać?

Odpowiedz

4

Domyślnie klient próbuje połączyć się ponownie po rozłączeniu. Można to zmienić, jeśli chcesz: socket.io client

Po ponownym połączeniu serwer zobaczy nowe połączenie i od ciebie zależy, czy wdrożysz logikę, aby zidentyfikować nowe połączenie z poprzednim. Tak więc w praktyce - zamiast implementować logikę adduser po "połączeniu", zrób to (lub nie) po tym, jak klient wyśle ​​trochę informacji na serwer.

+0

Tak. Identycznie z wynikiem zauważam, co dzieje się z naszą aplikacją. dzięki – Xin

Powiązane problemy