2012-08-01 21 views
10

Używam WebSockets Netty i wszystko wydaje się działać prawidłowo poza tym drobny problem:Chrome: Połączenie websocket nie zamknięty, gdy przeglądarka zamknięte

Jeśli zamknę przeglądarkę/zakładka klienta js websocket, połączenie websocket jest automatcally zamknięte przy korzystaniu z firewalla Mozilla (obecnie używa firefox 14), ale to samo nie dzieje się w Chrome 20/21.

Ktoś widział podobny problem/czy ktoś może powiedzieć, dlaczego połączenie nie jest automatycznie zamykane?

Odpowiedz

6

Chyba powinienem był to sprawdzić wcześniej w sekcji błędów chromu, ale nie byłem pewien, czy to błąd. Doniesiono wcześniej przez kogoś i bug chrom już istnieje:

Issue 51687 : WebSocket: Send close with code 1001 on reload/tab close

Aktualizacja: Ktoś zgłosił poprawkę, aby rozwiązać ten problem, można zauważyć w powyższym linku.

+1

Chrome nadal nie zamknie połączenia po zamknięciu przeglądarki. :( – Goot

1

To może nie być prawda, ale nie mogę dodać komentarza do Twojego pytania. Chrome/Chrom nie zamyka się automatycznie, jeśli masz uruchomioną aplikację i wybrałeś "Kontynuuj działanie aplikacji w tle po zamknięciu Chromium" w Ustawieniach -> Pod maską.

Możliwe, że traktuje połączenie internetowe jako aplikację. Spróbuj spojrzeć na swoje działające procesy i zabić znaleziony proces chrom/chrom.

Ponownie, to tylko spekulacja z mojej strony.

+0

Nie, nie sądzę, tak nawet po wyłączeniu tej opcji, połączenie websocket nie jest zamknięta na zamknięciu kartę. – Rndm

+0

To może być błąd w Chrome. Powinieneś otworzyć raport o błędzie z projektem chromium. –

+0

Opublikowalem to tutaj, aby potwierdzić, że ktoś inny to widział lub jest dostępna pewna opcja, aby go rozwiązać. – Rndm

0

Chrome nie zamyka połączenia, gdy użytkownik zamknie okno lub przeglądarkę. Wyzwoli to zdarzenie Błąd.

Możliwe obejście może wyglądać następująco:

@OnError 
    public void onErr(Throwable t) { 
     onClose(this.container.getWsSession(), null); 

    } 

Ale to będzie zamknąć połączenie za każdym razem, błędem jest wyzwalany. Możesz nie sprawdzać, co się dzieje, przed zamknięciem połączenia samemu.

Więcej dyskusji, należy dołączyć do tego pytanie:

Websocket: Closing browser triggers onError() in chrome but onClose() event in Firefox

Powiązane problemy