diff --git a/packages/login/src/server/index.tsx b/packages/login/src/server/index.tsx index 373ee34dad..15d17b4b53 100644 --- a/packages/login/src/server/index.tsx +++ b/packages/login/src/server/index.tsx @@ -10,6 +10,7 @@ import { getAssets } from "./lib/helpers"; import { renderToString } from "react-dom/server"; import React from "react"; import App from "../client/App"; +import { Server } from "ws"; let port: number = 5011; @@ -73,7 +74,8 @@ if (IS_DEVELOPMENT) { waitTimeout = setTimeout(() => { fsWait = false; clearTimeout(waitTimeout); - wss.broadcast("reload"); + + wss.broadcast && wss.broadcast("reload"); }, 100); } }); diff --git a/packages/login/src/server/lib/websocket.ts b/packages/login/src/server/lib/websocket.ts index 45cb99bde2..5787b9eef1 100644 --- a/packages/login/src/server/lib/websocket.ts +++ b/packages/login/src/server/lib/websocket.ts @@ -1,30 +1,36 @@ -const WebSocket = require("ws"); -const pkg = require("../../../package.json"); +import { RawData, WebSocketServer, Server } from "ws"; +import pkg from "../../../package.json"; const { socketPath } = pkg; -module.exports = (expressServer) => { - const wss = new WebSocket.Server({ +interface WSS extends Server { + broadcast?: (message: RawData | string) => void; +} + +export default (expressServer: any) => { + const wss: WSS = new WebSocketServer({ noServer: true, path: socketPath, }); - expressServer.on("upgrade", (request, socket, head) => { + const broadcast = (message: RawData | string): void => { + wss.clients.forEach(function each(client) { + client.send(message); + }); + }; + + expressServer.on("upgrade", (request: any, socket: any, head: any) => { wss.handleUpgrade(request, socket, head, (websocket) => { wss.emit("connection", websocket, request); }); }); - wss.on("connection", function connection(ws) { - ws.on("message", function (message) { - wss.broadcast(message); + wss.on("connection", (ws) => { + ws.on("message", (message) => { + broadcast(message); }); }); - wss.broadcast = function broadcast(msg) { - wss.clients.forEach(function each(client) { - client.send(msg); - }); - }; + wss.broadcast = broadcast; return wss; };