Estoy desarrollando un servidor websocket con Node.Js v14.17.3 usando el paquete "ws": "^7.4.5" . Mi código de servidor es este:
const WebSocket = require("ws"); const url = "localhost"; const port = 8081; const wss = new WebSocket.Server({ host: url, port }); wss.on("connection", function (ws) { ws.on("message", function (data) { console.log("received: %s", data); }); function onSocketClose(code, reason) { console.log("Closing open web socket", code, reason); console.log("Closed web socket."); } ws.on("close", onSocketClose); });Mi código de cliente es este:
window.onclose = function (event) { console.log("Window closing."); closeSocket("Window closed"); }; window.onunload = function (event) { console.info("Window unloaded"); closeSocket("Window unloaded"); }; function closeSocket(reason) { if (reason) { console.info("Closing socket due to:", reason); } else { reason = "Unknown reason"; } webSocket.onclose = function (ev) { console.info("Websocket closed."); }; webSocket.close(1001, reason); } En la devolución de llamada on("close", ...) obtengo un motivo vacío, mientras espero el motivo que especifiqué en el método del cliente.