From ef8c4cef8ae3cc478bb3556417b564d2e271bb76 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 22 Mar 2026 20:44:07 +0200 Subject: [PATCH] fix(server): web socket initialization not working --- apps/server/src/main.ts | 4 +++- apps/server/src/services/ws_messaging_provider.ts | 4 ++-- apps/server/src/www.ts | 5 ++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/server/src/main.ts b/apps/server/src/main.ts index 3b3cc8aee9..3162dd68bc 100644 --- a/apps/server/src/main.ts +++ b/apps/server/src/main.ts @@ -8,8 +8,9 @@ import path from "path"; import ClsHookedExecutionContext from "./cls_provider.js"; import NodejsCryptoProvider from "./crypto_provider.js"; -import NodeRequestProvider from "./services/request.js"; import dataDirs from "./services/data_dir.js"; +import NodeRequestProvider from "./services/request.js"; +import WebSocketMessagingProvider from "./services/ws_messaging_provider.js"; import BetterSqlite3Provider from "./sql_provider.js"; async function startApplication() { @@ -48,6 +49,7 @@ async function startApplication() { crypto: new NodejsCryptoProvider(), request: new NodeRequestProvider(), executionContext: new ClsHookedExecutionContext(), + messaging: new WebSocketMessagingProvider(), translations: (await import("./services/i18n.js")).initializeTranslations, extraAppInfo: { nodeVersion: process.version, diff --git a/apps/server/src/services/ws_messaging_provider.ts b/apps/server/src/services/ws_messaging_provider.ts index 545bc749e2..fc9a58c177 100644 --- a/apps/server/src/services/ws_messaging_provider.ts +++ b/apps/server/src/services/ws_messaging_provider.ts @@ -16,11 +16,11 @@ type SessionParser = (req: IncomingMessage, params: {}, cb: () => void) => void; * message serialization, and client tracking. */ export default class WebSocketMessagingProvider implements MessagingProvider { - private webSocketServer: WebSocketServer; + private webSocketServer!: WebSocketServer; private clientMap = new Map(); private clientMessageHandler?: ClientMessageHandler; - constructor(httpServer: HttpServer, sessionParser: SessionParser) { + init(httpServer: HttpServer, sessionParser: SessionParser) { this.webSocketServer = new WebSocketServer({ verifyClient: (info, done) => { sessionParser(info.req, {}, () => { diff --git a/apps/server/src/www.ts b/apps/server/src/www.ts index 3860444cdb..bb571ce457 100644 --- a/apps/server/src/www.ts +++ b/apps/server/src/www.ts @@ -1,3 +1,4 @@ +import { getMessagingProvider } from "@triliumnext/core"; import type { Express } from "express"; import fs from "fs"; import http from "http"; @@ -12,7 +13,6 @@ import log from "./services/log.js"; import port from "./services/port.js"; import { getDbSize } from "./services/sql_init.js"; import utils, { formatSize, formatUtcTime } from "./services/utils.js"; -import ws from "./services/ws.js"; import WebSocketMessagingProvider from "./services/ws_messaging_provider.js"; const MINIMUM_NODE_VERSION = "20.0.0"; @@ -60,8 +60,7 @@ export default async function startTriliumServer() { const httpServer = startHttpServer(app); const sessionParser = (await import("./routes/session_parser.js")).default; - const messagingProvider = new WebSocketMessagingProvider(httpServer, sessionParser); - ws.init(messagingProvider); // TODO: Not sure why session parser is incompatible. + (getMessagingProvider() as WebSocketMessagingProvider).init(httpServer, sessionParser); // TODO: Not sure why session parser is incompatible. if (utils.isElectron) { const electronRouting = await import("./routes/electron.js");