O fato é que existem duas versões principais de protocolo do WebSockets em uso hoje. A versão antiga que usa o [0x00][message][0xFF]
protocolo, e há a nova versão usando pacotes formatados Hybi .
A versão antiga do protocolo é usada pelo Opera e iPod / iPad / iPhones, portanto, é realmente importante que a compatibilidade com versões anteriores seja implementada nos servidores WebSockets. Com esses navegadores usando o protocolo antigo, descobri que atualizar a página ou navegar para fora da página ou fechar o navegador resultam no fechamento automático da conexão. Ótimo!!
No entanto, com navegadores que usam a nova versão do protocolo (por exemplo, Firefox, Chrome e, eventualmente, IE10), apenas o fechamento do navegador resultará no fechamento automático da conexão. Ou seja, se você atualizar a página ou sair da página, o navegador NÃO fechará automaticamente a conexão. No entanto, o que o navegador faz é enviar um pacote hybi para o servidor com o primeiro byte (o proto ident) sendo 0x88
(mais conhecido como quadro de dados próximo). Depois que o servidor recebe esse pacote, ele pode forçar o fechamento da conexão, se você escolher.
onclose
evento seja acionado inesperadamente, ou talvez de propósito, à medida que o usuário navega / página é recarregada. Eu postei uma pergunta perguntando o que o comportamento esperado deve ser, qual navegador tem direito e como vamos implementar auto-reconexão.