Răsfoiți Sursa

fix ExpressPeerServer when mount on custom path

afrokick 5 ani în urmă
părinte
comite
b3f223c51f
4 a modificat fișierele cu 12 adăugiri și 18 ștergeri
  1. 0 7
      dist/src/index.js
  2. 7 1
      dist/src/instance.js
  3. 0 9
      src/index.ts
  4. 5 1
      src/instance.ts

+ 0 - 7
dist/src/index.js

@@ -27,14 +27,7 @@ exports.ExpressPeerServer = ExpressPeerServer;
 function PeerServer(options = {}, callback) {
 function PeerServer(options = {}, callback) {
     const app = express_1.default();
     const app = express_1.default();
     const newOptions = Object.assign(Object.assign({}, config_1.default), options);
     const newOptions = Object.assign(Object.assign({}, config_1.default), options);
-    let path = newOptions.path;
     const port = newOptions.port;
     const port = newOptions.port;
-    if (!path.startsWith('/')) {
-        path = "/" + path;
-    }
-    if (!path.endsWith('/')) {
-        path += "/";
-    }
     let server;
     let server;
     if (newOptions.ssl && newOptions.ssl.key && newOptions.ssl.cert) {
     if (newOptions.ssl && newOptions.ssl.key && newOptions.ssl.cert) {
         server = https_1.default.createServer(options.ssl, app);
         server = https_1.default.createServer(options.ssl, app);

+ 7 - 1
dist/src/instance.js

@@ -1,5 +1,9 @@
 "use strict";
 "use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
 Object.defineProperty(exports, "__esModule", { value: true });
 Object.defineProperty(exports, "__esModule", { value: true });
+const path_1 = __importDefault(require("path"));
 const realm_1 = require("./models/realm");
 const realm_1 = require("./models/realm");
 const checkBrokenConnections_1 = require("./services/checkBrokenConnections");
 const checkBrokenConnections_1 = require("./services/checkBrokenConnections");
 const messagesExpire_1 = require("./services/messagesExpire");
 const messagesExpire_1 = require("./services/messagesExpire");
@@ -20,10 +24,12 @@ exports.createInstance = ({ app, server, options }) => {
         }
         }
     });
     });
     app.use(options.path, api);
     app.use(options.path, api);
+    //use mountpath for WS server
+    const customConfig = Object.assign(Object.assign({}, config), { path: path_1.default.join(app.path(), options.path, '/') });
     const wss = new webSocketServer_1.WebSocketServer({
     const wss = new webSocketServer_1.WebSocketServer({
         server,
         server,
         realm,
         realm,
-        config
+        config: customConfig
     });
     });
     wss.on("connection", (client) => {
     wss.on("connection", (client) => {
         const messageQueue = realm.getMessageQueueById(client.getId());
         const messageQueue = realm.getMessageQueueById(client.getId());

+ 0 - 9
src/index.ts

@@ -42,17 +42,8 @@ function PeerServer(options: Optional<IConfig> = {}, callback?: (server: Server)
     ...options
     ...options
   };
   };
 
 
-  let path = newOptions.path;
   const port = newOptions.port;
   const port = newOptions.port;
 
 
-  if (!path.startsWith('/')) {
-    path = "/" + path;
-  }
-
-  if (!path.endsWith('/')) {
-    path += "/";
-  }
-
   let server: Server;
   let server: Server;
 
 
   if (newOptions.ssl && newOptions.ssl.key && newOptions.ssl.cert) {
   if (newOptions.ssl && newOptions.ssl.key && newOptions.ssl.cert) {

+ 5 - 1
src/instance.ts

@@ -1,5 +1,6 @@
 import express from "express";
 import express from "express";
 import { Server } from "net";
 import { Server } from "net";
+import path from 'path';
 import { IClient } from "./models/client";
 import { IClient } from "./models/client";
 import { IMessage } from "./models/message";
 import { IMessage } from "./models/message";
 import { Realm } from "./models/realm";
 import { Realm } from "./models/realm";
@@ -32,10 +33,13 @@ export const createInstance = ({ app, server, options }: {
 
 
   app.use(options.path, api);
   app.use(options.path, api);
 
 
+  //use mountpath for WS server
+  const customConfig = { ...config, path: path.join(app.path(), options.path, '/') };
+
   const wss: IWebSocketServer = new WebSocketServer({
   const wss: IWebSocketServer = new WebSocketServer({
     server,
     server,
     realm,
     realm,
-    config
+    config: customConfig
   });
   });
 
 
   wss.on("connection", (client: IClient) => {
   wss.on("connection", (client: IClient) => {