switch to ultimate-ws

This commit is contained in:
Holly Stubbs 2024-10-09 10:31:55 +01:00
parent f048945ece
commit 30e6e61c81
Signed by: tgpholly
GPG key ID: B8583C4B7D18119E
4 changed files with 28 additions and 18 deletions

View file

@ -27,7 +27,6 @@ const messagesOut = metrics.addMetric(new Counter("multiprobe_msg_out"));
dataIn.setHelpText("Total messages sent by the server"); dataIn.setHelpText("Total messages sent by the server");
import { createReader, createWriter, Endian } from "bufferstuff"; import { createReader, createWriter, Endian } from "bufferstuff";
import { WebSocketServer } from "ws";
import Fastify from "fastify"; import Fastify from "fastify";
import FastifyFormBody from "@fastify/formbody"; import FastifyFormBody from "@fastify/formbody";
import FastifyCookie from "@fastify/cookie"; import FastifyCookie from "@fastify/cookie";
@ -55,6 +54,8 @@ import BadgeCache from "./objects/BadgeCache";
import ScriptParameters from "./interfaces/ScriptParameters"; import ScriptParameters from "./interfaces/ScriptParameters";
import { BadgeUnlockResult } from "./enums/BadgeUnlockResult"; import { BadgeUnlockResult } from "./enums/BadgeUnlockResult";
const { WebSocketServer } = require("ultimate-ws");
Console.customHeader(`MultiProbe server started at ${new Date()}`); Console.customHeader(`MultiProbe server started at ${new Date()}`);
const users = new FunkyArray<string, RemoteUser>(); const users = new FunkyArray<string, RemoteUser>();
@ -196,7 +197,7 @@ async function updateConnectionMetrics() {
const keepalivePacket = createWriter(Endian.LE, 1).writeByte(MessageType.KeepAlive).toBuffer(); const keepalivePacket = createWriter(Endian.LE, 1).writeByte(MessageType.KeepAlive).toBuffer();
websocketServer.on("connection", (socket) => { websocketServer.on("connection", (socket: any) => {
const myUUID = crypto.randomUUID(); const myUUID = crypto.randomUUID();
let user:RemoteUser; let user:RemoteUser;
@ -247,7 +248,7 @@ websocketServer.on("connection", (socket) => {
socket.on("close", closeOrError); socket.on("close", closeOrError);
socket.on("error", closeOrError); socket.on("error", closeOrError);
socket.on("message", async (data) => { socket.on("message", async (data: any) => {
const reader = createReader(Endian.LE, data as Buffer); const reader = createReader(Endian.LE, data as Buffer);
dataIn.add(reader.length); dataIn.add(reader.length);
messagesIn.add(1); messagesIn.add(1);

View file

@ -1,6 +1,5 @@
import { createWriter, Endian } from "bufferstuff"; import { createWriter, Endian } from "bufferstuff";
import IMetric from "simple-prom/lib/interfaces/IMetric"; import IMetric from "simple-prom/lib/interfaces/IMetric";
import { WebSocket } from "ws";
import { MessageType } from "../enums/MessageType"; import { MessageType } from "../enums/MessageType";
export default class RemoteUser { export default class RemoteUser {

View file

@ -19,12 +19,11 @@
"hsconsole": "^1.0.2", "hsconsole": "^1.0.2",
"mysql2": "^3.11.3", "mysql2": "^3.11.3",
"simple-prom": "^1.0.1", "simple-prom": "^1.0.1",
"ws": "^8.16.0" "ultimate-ws": "^1.0.8"
}, },
"devDependencies": { "devDependencies": {
"@types/ejs": "^3.1.5", "@types/ejs": "^3.1.5",
"@types/node": "^22.7.5", "@types/node": "^22.7.5",
"@types/ws": "^8.5.12",
"@vercel/ncc": "^0.38.2", "@vercel/ncc": "^0.38.2",
"check-outdated": "^2.12.0", "check-outdated": "^2.12.0",
"nodemon": "^3.1.7", "nodemon": "^3.1.7",
@ -288,16 +287,6 @@
"undici-types": "~6.19.2" "undici-types": "~6.19.2"
} }
}, },
"node_modules/@types/ws": {
"version": "8.5.12",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
"integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@vercel/ncc": { "node_modules/@vercel/ncc": {
"version": "0.38.2", "version": "0.38.2",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.2.tgz", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.2.tgz",
@ -3349,6 +3338,12 @@
} }
} }
}, },
"node_modules/tseep": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/tseep/-/tseep-1.3.1.tgz",
"integrity": "sha512-ZPtfk1tQnZVyr7BPtbJ93qaAh2lZuIOpTMjhrYa4XctT8xe7t4SAW9LIxrySDuYMsfNNayE51E/WNGrNVgVicQ==",
"license": "MIT"
},
"node_modules/typed-array-buffer": { "node_modules/typed-array-buffer": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
@ -3436,6 +3431,17 @@
"node": ">=14.17" "node": ">=14.17"
} }
}, },
"node_modules/ultimate-ws": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/ultimate-ws/-/ultimate-ws-1.0.8.tgz",
"integrity": "sha512-pk/PM+G6IK3l1BdgXXHdOuFul0/hyyi3AluNdgYjaXap/u47wRRJDE6YCPks0wgcHkb9iOTu9AiHFkH1ezXkOw==",
"license": "Apache-2.0",
"dependencies": {
"tseep": "^1.3.1",
"uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.48.0",
"ws": "^8.18.0"
}
},
"node_modules/unbox-primitive": { "node_modules/unbox-primitive": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
@ -3464,6 +3470,11 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/uWebSockets.js": {
"version": "20.48.0",
"resolved": "git+ssh://git@github.com/uNetworking/uWebSockets.js.git#51ae1d1fd92dff77cbbdc7c431021f85578da1a6",
"license": "Apache-2.0"
},
"node_modules/v8-compile-cache-lib": { "node_modules/v8-compile-cache-lib": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",

View file

@ -22,12 +22,11 @@
"hsconsole": "^1.0.2", "hsconsole": "^1.0.2",
"mysql2": "^3.11.3", "mysql2": "^3.11.3",
"simple-prom": "^1.0.1", "simple-prom": "^1.0.1",
"ws": "^8.16.0" "ultimate-ws": "^1.0.8"
}, },
"devDependencies": { "devDependencies": {
"@types/ejs": "^3.1.5", "@types/ejs": "^3.1.5",
"@types/node": "^22.7.5", "@types/node": "^22.7.5",
"@types/ws": "^8.5.12",
"@vercel/ncc": "^0.38.2", "@vercel/ncc": "^0.38.2",
"check-outdated": "^2.12.0", "check-outdated": "^2.12.0",
"nodemon": "^3.1.7", "nodemon": "^3.1.7",