Эх сурвалжийг харах

added peerWs to app, added ws config

Sergii KLiuchnyk 2 жил өмнө
parent
commit
a77de706c7

+ 5 - 5
dist/src/instance.js

@@ -27,12 +27,12 @@ const createInstance = ({ app, server, options }) => {
     app.use(options.path, api);
     //use mountpath for WS server
     const customConfig = Object.assign(Object.assign({}, config), { path: path_1.default.posix.join(app.path(), options.path, '/') });
-    const wss = new webSocketServer_1.WebSocketServer({
+    const wss2 = new webSocketServer_1.WebSocketServer({
         server,
         realm,
         config: customConfig
     });
-    wss.on("connection", (client) => {
+    wss2.on("connection", (client) => {
         const messageQueue = realm.getMessageQueueById(client.getId());
         if (messageQueue) {
             let message;
@@ -43,14 +43,14 @@ const createInstance = ({ app, server, options }) => {
         }
         app.emit("connection", client);
     });
-    wss.on("message", (client, message) => {
+    wss2.on("message", (client, message) => {
         app.emit("message", client, message);
         messageHandler.handle(client, message);
     });
-    wss.on("close", (client) => {
+    wss2.on("close", (client) => {
         app.emit("disconnect", client);
     });
-    wss.on("error", (error) => {
+    wss2.on("error", (error) => {
         app.emit("error", error);
     });
     messagesExpire.startMessagesExpiration();

+ 1 - 1
package-lock.json

@@ -1,6 +1,6 @@
 {
   "name": "peer",
-  "version": "0.6.1",
+  "version": "0.6.2",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {

+ 3 - 0
src/config/index.ts

@@ -1,3 +1,5 @@
+import {ServerOptions as WsConfig} from 'ws';
+
 export interface IConfig {
   readonly host: string;
   readonly port: number;
@@ -14,6 +16,7 @@ export interface IConfig {
     cert: string;
   };
   readonly generateClientId?: () => string;
+  readonly ws?: WsConfig;
 }
 
 const defaultConfig: IConfig = {

+ 11 - 6
src/instance.ts

@@ -34,15 +34,20 @@ export const createInstance = ({ app, server, options }: {
   app.use(options.path, api);
 
   //use mountpath for WS server
-  const customConfig = { ...config, path: path.posix.join(app.path(), options.path, '/') };
+  const customConfig = {
+    ...config,
+    path: path.posix.join(app.path(), options.path, '/'),
+  };
 
-  const wss2: IWebSocketServer = new WebSocketServer({
+  const wss: IWebSocketServer = new WebSocketServer({
     server,
     realm,
     config: customConfig
   });
 
-  wss2.on("connection", (client: IClient) => {
+  app.set('peerWs', wss);
+
+  wss.on("connection", (client: IClient) => {
     const messageQueue = realm.getMessageQueueById(client.getId());
 
     if (messageQueue) {
@@ -57,16 +62,16 @@ export const createInstance = ({ app, server, options }: {
     app.emit("connection", client);
   });
 
-  wss2.on("message", (client: IClient, message: IMessage) => {
+  wss.on("message", (client: IClient, message: IMessage) => {
     app.emit("message", client, message);
     messageHandler.handle(client, message);
   });
 
-  wss2.on("close", (client: IClient) => {
+  wss.on("close", (client: IClient) => {
     app.emit("disconnect", client);
   });
 
-  wss2.on("error", (error: Error) => {
+  wss.on("error", (error: Error) => {
     app.emit("error", error);
   });
 

+ 6 - 2
src/services/webSocketServer/index.ts

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