Il problema è che ci sono 2 versioni di protocollo principali di WebSockets in uso oggi. La vecchia versione che usa il protocollo [0x00][message][0xFF]
, e poi c'è la nuova versione che utilizza i pacchetti Hybi.
La vecchia versione del protocollo è utilizzata da Opera e iPod/iPad/iPhone, quindi è davvero importante che la compatibilità con le versioni precedenti sia implementata nei server WebSockets. Con questi browser che utilizzano il vecchio protocollo, ho scoperto che l'aggiornamento della pagina o l'allontanamento dalla pagina o la chiusura del browser comportano la chiusura automatica della connessione da parte del browser. Grande!!
Tuttavia, con i browser che utilizzano la nuova versione del protocollo (ad es. Firefox, Chrome e alla fine IE10), solo la chiusura del browser si tradurrà nel browser di chiudere automaticamente la connessione. Vale a dire, se si aggiorna la pagina o si esce dalla pagina, il browser NON chiude automaticamente la connessione. Tuttavia, ciò che il browser fa, è inviare un pacchetto hybi al server con il primo byte (il proto ident) che è 0x88
(meglio noto come frame di dati vicino). Una volta che il server riceve questo pacchetto, può forzatamente chiudere la connessione stessa, se lo si desidera.
È possibile che in Firefox la connessione sembra bloccarsi nel carico della pagina successiva. Non riesco a trovare un riferimento ma penso che ci potrebbe essere stato un bug su questo. L'altra possibilità è che l'evento "onclose" venga attivato in modo imprevisto, o forse di proposito, mentre l'utente naviga/la pagina viene ricaricata. Ho [postato una domanda] (http://stackoverflow.com/questions/10965720/should-websocket-onclose-be-triggered-by-user-navigation-or-refresh) chiedendo quale dovrebbe essere il comportamento previsto, che browser ha ragione e come implementiamo la riconnessione automatica. – leggetter
considera [questi problemi] (http://stackoverflow.com/questions/14645011/window-onbeforeunload-and-window-onunload-is-not-working-in-firefox-safari-o) con l'evento 'onbeforeunload' – artkoenig