Tengo una aplicación Express.js simple que inicia un servidor websocket y luego el front-end se conecta a este servidor. Cuando inicio tanto el servidor Express.js de back-end como el servidor de front-end, todo funciona bien y puedo ver los mensajes entrantes del back-end que se registran en el front-end cada segundo.
Sin embargo, cuando actualizo mi navegador, el servidor Express.js falla y registra esto:
Error: WebSocket is not open: readyState 3 (CLOSED)El código Express.js se ve así:
import * as WebSocket from 'ws'; const wss = new WebSocket.Server({ server }); const connect = function () { const wss = new WebSocket.Server({ server }); wss.on('connection', (ws) => { ws.send(createMessage()); setInterval(() => { ws.send(generateMsg()); }, 1000); ws.on('error', (err) => { console.warn(`Client disconnected - reason: ${err}`); setTimeout(() => { connect(); }, 1000) }) }); } connect();Y en mi front-end, tengo esto:
private subject = webSocket("ws://localhost:8999"); connect() { this.subject.subscribe( (msg) => { console.log(msg); }, err => { setTimeout(() => { this.connect(); }, 1000) }, () => console.log('complete') ); } connect();¿Alguna idea de por qué no funciona la reconexión entre el front-end y el back-end?