Uso este código para conectarme al socket web de NodeJS:
useEffect(() => { let futureResponseFeedAddress = "ws://localhost:/endpoint"; const futureResponseClient = new W3CWebSocket(futureResponseFeedAddress); props.onUpdateOrderbookWebsocket(futureResponseClient); futureResponseClient.onopen = () => { console.log("WebSocket Client Connected on " + futureResponseFeedAddress); }; futureResponseClient.onmessage = (message) => { .............. }; futureResponseClient.onclose = closeEvent => { console.log("response messages websocket closed."); } return function cleanup() { futureResponseClient.close(); }; }, []);
Pero después de alrededor de 1-2 minutos, los mensajes no se reciben. Parece que tengo tiempo de espera. ¿Sabes cómo puedo configurar el web socket para que esté siempre abierto?
Mi sugerencia es que debe usar socket.io para realizar cualquier comunicación en tiempo real. Utiliza sondeo largo de http, actualiza la conexión a websocket si es necesario y también tiene un buen soporte de navegador. Es mucho más fiable también. Pero hay algunos inconvenientes, su servidor necesita usar la api del servidor socket.io.
No hay necesidad de reinventar la rueda.