mirror of
https://activitypub.software/TransFem-org/Sharkey.git
synced 2025-03-31 01:48:17 +02:00
merge: Optionally enable websocket compression (!921)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/921 Approved-by: dakkar <dakkar@thenautilus.net> Approved-by: Marie <github@yuugi.dev>
This commit is contained in:
commit
65d5f1e081
3 changed files with 17 additions and 1 deletions
|
@ -419,3 +419,9 @@ attachLdSignatureForRelays: true
|
|||
# How long to save each log entry before deleting it.
|
||||
# Default: 2592000000 (1 week)
|
||||
#maxAge: 2592000000
|
||||
|
||||
# Transparently compress every websocket message on clients that support it.
|
||||
# Trades server CPU usage for reduced bandwidth usage and a faster frontend on the client.
|
||||
# If you're not using jemalloc, this may cause memory fragmentation and performance issues! (https://www.npmjs.com/package/ws#websocket-compression)
|
||||
# jemalloc is used by default in the Sharkey Docker image and may be set up manually otherwise: https://github.com/jemalloc/jemalloc/wiki/getting-started
|
||||
websocketCompression: false
|
||||
|
|
|
@ -136,6 +136,8 @@ type Source = {
|
|||
preSave?: boolean;
|
||||
maxAge?: number;
|
||||
};
|
||||
|
||||
websocketCompression?: boolean;
|
||||
};
|
||||
|
||||
export type Config = {
|
||||
|
@ -253,6 +255,8 @@ export type Config = {
|
|||
preSave: boolean;
|
||||
maxAge: number;
|
||||
};
|
||||
|
||||
websocketCompression?: boolean;
|
||||
};
|
||||
|
||||
export type FulltextSearchProvider = 'sqlLike' | 'sqlPgroonga' | 'meilisearch' | 'sqlTsvector';
|
||||
|
@ -401,6 +405,7 @@ export function loadConfig(): Config {
|
|||
preSave: config.activityLogging?.preSave ?? false,
|
||||
maxAge: config.activityLogging?.maxAge ?? (1000 * 60 * 60 * 24 * 30),
|
||||
},
|
||||
websocketCompression: config.websocketCompression ?? false,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -535,7 +540,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([
|
||||
|
|
|
@ -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,
|
||||
});
|
||||
|
||||
server.on('upgrade', async (request, socket, head) => {
|
||||
|
|
Loading…
Add table
Reference in a new issue