From 2b919c4eb0dddd668a7f541122d54f191a0872c3 Mon Sep 17 00:00:00 2001 From: PrivateGER Date: Tue, 25 Feb 2025 22:07:59 +0100 Subject: Optionally enable websocket compression --- packages/backend/src/config.ts | 5 +++++ packages/backend/src/server/api/StreamingApiServerService.ts | 5 +++++ 2 files changed, 10 insertions(+) (limited to 'packages/backend/src') diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index c571c227a1..b09a144a4f 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -136,6 +136,8 @@ type Source = { preSave?: boolean; maxAge?: number; }; + + websocketCompression?: boolean; }; export type Config = { @@ -252,6 +254,8 @@ export type Config = { preSave: boolean; maxAge: number; }; + + websocketCompression?: boolean; }; export type FulltextSearchProvider = 'sqlLike' | 'sqlPgroonga' | 'meilisearch' | 'sqlTsvector'; @@ -400,6 +404,7 @@ export function loadConfig(): Config { preSave: config.activityLogging?.preSave ?? false, maxAge: config.activityLogging?.maxAge ?? (1000 * 60 * 60 * 24 * 30), }, + websocketCompression: config.websocketCompression, }; } diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index 6e7abcfae6..4eb11f2956 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -26,6 +26,7 @@ import MainStreamConnection from './stream/Connection.js'; import { ChannelsService } from './stream/ChannelsService.js'; import type * as http from 'node:http'; import type { IEndpointMeta } from './endpoints.js'; +import type {Config} from "@/config.js"; @Injectable() export class StreamingApiServerService { @@ -49,6 +50,9 @@ export class StreamingApiServerService { private channelFollowingService: ChannelFollowingService, private rateLimiterService: SkRateLimiterService, private loggerService: LoggerService, + + @Inject(DI.config) + private config: Config, ) { } @@ -74,6 +78,7 @@ export class StreamingApiServerService { public attach(server: http.Server): void { this.#wss = new WebSocket.WebSocketServer({ noServer: true, + perMessageDeflate: this.config.websocketCompression ?? false, }); server.on('upgrade', async (request, socket, head) => { -- cgit v1.2.3-freya From 9ed9ed86aff235ed2da8deda2703d8df8d93db70 Mon Sep 17 00:00:00 2001 From: PrivateGER Date: Tue, 25 Feb 2025 23:53:53 +0100 Subject: override compression from env vars --- packages/backend/src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index b09a144a4f..5698f0b69e 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -539,7 +539,7 @@ function applyEnvOverrides(config: Source) { // these are all the settings that can be overridden - _apply_top([['url', 'port', 'address', 'socket', 'chmodSocket', 'disableHsts', 'id', 'dbReplications']]); + _apply_top([['url', 'port', 'address', 'socket', 'chmodSocket', 'disableHsts', 'id', 'dbReplications', 'websocketCompression']]); _apply_top(['db', ['host', 'port', 'db', 'user', 'pass', 'disableCache']]); _apply_top(['dbSlaves', Array.from((config.dbSlaves ?? []).keys()), ['host', 'port', 'db', 'user', 'pass']]); _apply_top([ -- cgit v1.2.3-freya From aa6bc9c9d0b66bff4ff7dedc96fd9bc347abc284 Mon Sep 17 00:00:00 2001 From: PrivateGER Date: Wed, 26 Feb 2025 12:13:13 +0100 Subject: linter fix --- packages/backend/src/server/api/StreamingApiServerService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index 4eb11f2956..f292c48306 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -26,7 +26,7 @@ import MainStreamConnection from './stream/Connection.js'; import { ChannelsService } from './stream/ChannelsService.js'; import type * as http from 'node:http'; import type { IEndpointMeta } from './endpoints.js'; -import type {Config} from "@/config.js"; +import type { Config } from "@/config.js"; @Injectable() export class StreamingApiServerService { -- cgit v1.2.3-freya From c08c8502e3d88489625ed4c702d8213e2d62dcdd Mon Sep 17 00:00:00 2001 From: PrivateGER Date: Tue, 18 Mar 2025 14:21:31 +0100 Subject: adjust compression fallback --- packages/backend/src/config.ts | 2 +- packages/backend/src/server/api/StreamingApiServerService.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index 5698f0b69e..ce66df11f9 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -404,7 +404,7 @@ export function loadConfig(): Config { preSave: config.activityLogging?.preSave ?? false, maxAge: config.activityLogging?.maxAge ?? (1000 * 60 * 60 * 24 * 30), }, - websocketCompression: config.websocketCompression, + websocketCompression: config.websocketCompression ?? false, }; } diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index f292c48306..0954744f81 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -78,7 +78,7 @@ export class StreamingApiServerService { public attach(server: http.Server): void { this.#wss = new WebSocket.WebSocketServer({ noServer: true, - perMessageDeflate: this.config.websocketCompression ?? false, + perMessageDeflate: this.config.websocketCompression, }); server.on('upgrade', async (request, socket, head) => { -- cgit v1.2.3-freya