La cuestión es que hay 2 versiones principales de protocolo de WebSockets en uso hoy en día. La versión anterior que usa el [0x00][message][0xFF]
protocolo, y luego está la nueva versión que usa paquetes formateados Hybi .
Opera y iPod / iPad / iPhones utilizan la versión de protocolo anterior, por lo que es realmente importante que se implemente la compatibilidad con versiones anteriores en los servidores WebSockets. Con estos navegadores que utilizan el protocolo anterior, descubrí que la actualización de la página, la navegación fuera de la página o el cierre del navegador hacen que el navegador cierre automáticamente la conexión. ¡¡Excelente!!
Sin embargo, con los navegadores que utilizan la nueva versión del protocolo (por ejemplo, Firefox, Chrome y eventualmente IE10), solo cerrar el navegador hará que el navegador cierre automáticamente la conexión. Es decir, si actualiza la página o se aleja de la página, el navegador NO cierra automáticamente la conexión. Sin embargo, lo que hace el navegador es enviar un paquete hybi al servidor con el primer byte (el identificador de protocolo) 0x88
(mejor conocido como el marco de datos cercano). Una vez que el servidor recibe este paquete, puede cerrar la conexión por la fuerza, si así lo desea.
onclose
evento se active inesperadamente, o tal vez a propósito, a medida que el usuario navega / la página se vuelve a cargar. He publicado una pregunta preguntando cuál debería ser el comportamiento esperado, qué navegador es el correcto y cómo implementamos la reconexión automática.