瀏覽代碼

createWebSocketServer option

Sergii KLiuchnyk 2 年之前
父節點
當前提交
077260a3a4
共有 5 個文件被更改,包括 18 次插入12 次删除
  1. 0 2
      dist/src/instance.js
  2. 7 1
      dist/src/services/webSocketServer/index.js
  3. 2 2
      src/config/index.ts
  4. 0 3
      src/instance.ts
  5. 9 4
      src/services/webSocketServer/index.ts

+ 0 - 2
dist/src/instance.js

@@ -32,8 +32,6 @@ const createInstance = ({ app, server, options }) => {
         realm,
         realm,
         config: customConfig
         config: customConfig
     });
     });
-    app.set('peerWs', wss);
-    app.emit('peerWs', wss);
     wss.on("connection", (client) => {
     wss.on("connection", (client) => {
         const messageQueue = realm.getMessageQueueById(client.getId());
         const messageQueue = realm.getMessageQueueById(client.getId());
         if (messageQueue) {
         if (messageQueue) {

+ 7 - 1
dist/src/services/webSocketServer/index.js

@@ -18,7 +18,13 @@ class WebSocketServer extends events_1.default {
         this.config = config;
         this.config = config;
         const path = this.config.path;
         const path = this.config.path;
         this.path = `${path}${path.endsWith('/') ? "" : "/"}${WS_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("connection", (socket, req) => this._onSocketConnection(socket, req));
         this.socketServer.on("error", (error) => this._onSocketError(error));
         this.socketServer.on("error", (error) => this._onSocketError(error));
     }
     }

+ 2 - 2
src/config/index.ts

@@ -1,4 +1,4 @@
-import {ServerOptions as WsConfig} from 'ws';
+import {Server, ServerOptions} from 'ws';
 
 
 export interface IConfig {
 export interface IConfig {
   readonly host: string;
   readonly host: string;
@@ -16,7 +16,7 @@ export interface IConfig {
     cert: string;
     cert: string;
   };
   };
   readonly generateClientId?: () => string;
   readonly generateClientId?: () => string;
-  readonly ws?: WsConfig;
+  readonly createWebSocketServer?: (options: ServerOptions) => Server;
 }
 }
 
 
 const defaultConfig: IConfig = {
 const defaultConfig: IConfig = {

+ 0 - 3
src/instance.ts

@@ -45,9 +45,6 @@ export const createInstance = ({ app, server, options }: {
     config: customConfig
     config: customConfig
   });
   });
 
 
-  app.set('peerWs', wss);
-  app.emit('peerWs', wss);
-
   wss.on("connection", (client: IClient) => {
   wss.on("connection", (client: IClient) => {
     const messageQueue = realm.getMessageQueueById(client.getId());
     const messageQueue = realm.getMessageQueueById(client.getId());
 
 

+ 9 - 4
src/services/webSocketServer/index.ts

@@ -18,7 +18,7 @@ interface IAuthParams {
   key?: string;
   key?: string;
 }
 }
 
 
-type CustomConfig = Pick<IConfig, 'path' | 'key' | 'concurrent_limit' | 'ws'>;
+type CustomConfig = Pick<IConfig, 'path' | 'key' | 'concurrent_limit' | 'createWebSocketServer'>;
 
 
 const WS_PATH = 'peerjs';
 const WS_PATH = 'peerjs';
 
 
@@ -40,11 +40,16 @@ export class WebSocketServer extends EventEmitter implements IWebSocketServer {
     const path = this.config.path;
     const path = this.config.path;
     this.path = `${path}${path.endsWith('/') ? "" : "/"}${WS_PATH}`;
     this.path = `${path}${path.endsWith('/') ? "" : "/"}${WS_PATH}`;
 
 
-    this.socketServer = new WebSocketLib.Server({
+    const options = {
       path: this.path,
       path: this.path,
       server,
       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("connection", (socket: MyWebSocket, req) => this._onSocketConnection(socket, req));
     this.socketServer.on("error", (error: Error) => this._onSocketError(error));
     this.socketServer.on("error", (error: Error) => this._onSocketError(error));