Web: Login: fixed types of ws

This commit is contained in:
Artem Tarasov 2022-08-04 14:56:19 +03:00
parent 16af62e19b
commit fb403556fc
2 changed files with 22 additions and 14 deletions

View File

@ -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);
}
});

View File

@ -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;
};