diff --git a/dist/src/instance.js b/dist/src/instance.js index 073e14b..9382bf0 100644 --- a/dist/src/instance.js +++ b/dist/src/instance.js @@ -32,8 +32,6 @@ const createInstance = ({ app, server, options }) => { realm, config: customConfig }); - app.set('peerWs', wss); - app.emit('peerWs', wss); wss.on("connection", (client) => { const messageQueue = realm.getMessageQueueById(client.getId()); if (messageQueue) { diff --git a/dist/src/services/webSocketServer/index.js b/dist/src/services/webSocketServer/index.js index b36a749..52aae51 100644 --- a/dist/src/services/webSocketServer/index.js +++ b/dist/src/services/webSocketServer/index.js @@ -18,7 +18,13 @@ class WebSocketServer extends events_1.default { this.config = config; const path = this.config.path; this.path = `${path}${path.endsWith('/') ? "" : "/"}${WS_PATH}`; - this.socketServer = new ws_1.default.Server(Object.assign({ path: this.path, server }, this.config.ws)); + const options = { + path: this.path, + server, + }; + this.socketServer = (config.createWebSocketServer ? + config.createWebSocketServer(options) : + new ws_1.default.Server(options)); this.socketServer.on("connection", (socket, req) => this._onSocketConnection(socket, req)); this.socketServer.on("error", (error) => this._onSocketError(error)); } diff --git a/src/config/index.ts b/src/config/index.ts index a3469fa..0f3e60e 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,4 +1,4 @@ -import {ServerOptions as WsConfig} from 'ws'; +import {Server, ServerOptions} from 'ws'; export interface IConfig { readonly host: string; @@ -16,7 +16,7 @@ export interface IConfig { cert: string; }; readonly generateClientId?: () => string; - readonly ws?: WsConfig; + readonly createWebSocketServer?: (options: ServerOptions) => Server; } const defaultConfig: IConfig = { diff --git a/src/instance.ts b/src/instance.ts index 42a1006..9be438c 100644 --- a/src/instance.ts +++ b/src/instance.ts @@ -45,9 +45,6 @@ export const createInstance = ({ app, server, options }: { config: customConfig }); - app.set('peerWs', wss); - app.emit('peerWs', wss); - wss.on("connection", (client: IClient) => { const messageQueue = realm.getMessageQueueById(client.getId()); diff --git a/src/services/webSocketServer/index.ts b/src/services/webSocketServer/index.ts index e3b4097..63c28e7 100644 --- a/src/services/webSocketServer/index.ts +++ b/src/services/webSocketServer/index.ts @@ -18,7 +18,7 @@ interface IAuthParams { key?: string; } -type CustomConfig = Pick; +type CustomConfig = Pick; const WS_PATH = 'peerjs'; @@ -40,11 +40,16 @@ export class WebSocketServer extends EventEmitter implements IWebSocketServer { const path = this.config.path; this.path = `${path}${path.endsWith('/') ? "" : "/"}${WS_PATH}`; - this.socketServer = new WebSocketLib.Server({ + const options = { path: this.path, server, - ...this.config.ws, - }); + }; + + this.socketServer = ( + config.createWebSocketServer ? + config.createWebSocketServer(options) : + new WebSocketLib.Server(options) + ); this.socketServer.on("connection", (socket: MyWebSocket, req) => this._onSocketConnection(socket, req)); this.socketServer.on("error", (error: Error) => this._onSocketError(error));