websockets test socket nodejs ejemplo websocket dart

test - ¿Cómo sé si la conexión está activa con websockets?



websocket test (2)

3 formas:

  • confíe en TCP para detectar la pérdida de conectividad, que finalmente aparecerá en JS onclose event
  • envía mensajes de WebSocket desde el servidor ... los navegadores responderán con WS pongs, la pérdida de conectividad probablemente se detecte más robustamente también en el lado del cliente
  • envía heartbeats de nivel de aplicación desde el navegador al servidor; el servidor necesita tener lógica para responder. no puedes activar los pings de WS desde los navegadores (en JS)

Tengo una aplicación web, que se ejecuta en un navegador. Esa aplicación web está conectada a un servidor que usa websockets. Entonces la comunicación entre el servidor y mi cliente / navegador se basa en websockets. Si ocurre algún evento mágico en el servidor, algunos servicios web envían un nuevo XML / JSON a mi aplicación web y se muestran los nuevos datos.

Pero, ¿cómo puedo saber, como cliente / navegador, si la conexión aún está activa? Digamos que no recibo ningún XML nuevo durante unos 30 segundos. Cómo sabría si la conexión está cerrada / interrumpida / servidor fuera de línea o si todo está bien, pero en el servidor no se produjo ningún evento mágico nuevo.


Un objeto de conexión websocket tiene un campo readyState que le indicará si la conexión todavía está activa (desde la documentación de dardos) . ReadyState puede ser cualquiera

0 - connection not yet established 1 - conncetion established 2 - in closing handshake 3 - connection closed or could not open

También puede definir un controlador de eventos para el evento de close websocket si esto es algo que le gustaría manejar (intente reconectar, etc.).