vani-meeting-server 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,6 @@ const ServerHandler_1 = require("../ServerHandler");
10
10
  const Constant_1 = __importDefault(require("../utility/Constant"));
11
11
  const Utility_1 = require("../utility/Utility");
12
12
  const EachSocketConnectionHandler_1 = require("../websocket/EachSocketConnectionHandler");
13
- const pickPort = require('pick-port');
14
13
  class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
15
14
  roomId;
16
15
  sendRouter;
@@ -28,6 +27,7 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
28
27
  for (const key of Object.keys(this.pipeTransports)) {
29
28
  this.pipeTransports[key].transport.close();
30
29
  }
30
+ this.pipeTransports = {};
31
31
  };
32
32
  informOtherSystems = async () => {
33
33
  console.log("informOtherSystems");
@@ -90,14 +90,16 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
90
90
  enableRtx: true,
91
91
  listenIp: { ip: '0.0.0.0', announcedIp: await Constant_1.default.getPublicIp() }
92
92
  });
93
- pipeTransport.on("@close", () => {
94
- console.log("Pipe Closed");
95
- });
96
- pipeTransport.on("routerclose", () => {
97
- console.log("routerclose Closed");
98
- });
99
- console.log(pipeTransport);
100
93
  if (pipeTransport) {
94
+ pipeTransport.on("@close", () => {
95
+ console.log("Pipe Closed");
96
+ for (const key of Object.keys(this.pipeTransports)) {
97
+ if (this.pipeTransports[key].transport.id === pipeTransport.id) {
98
+ delete this.pipeTransports[key];
99
+ break;
100
+ }
101
+ }
102
+ });
101
103
  this.pipeTransports[ip] = {
102
104
  transport: pipeTransport, port: pipeTransport.tuple.localPort
103
105
  };
@@ -125,9 +127,18 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
125
127
  console.log("onNewProducer SFUEachRoomMutliServerHandler", producer.appData);
126
128
  if (this.roomHandlerDataSource) {
127
129
  if (producer.closed === false && producer.appData.participant && producer.appData.participant.userId) {
128
- await producer.resume();
129
130
  const remoteParticipant = await RedisHandler_1.RedisHandler.getInstance().getParticipantByUserId(this.roomId, producer.appData.participant.userId);
130
131
  if (remoteParticipant) {
132
+ await producer.resume();
133
+ producer.on("@close", async () => {
134
+ console.log("On Producer closed", producer);
135
+ const response = { producerId: producer.id };
136
+ const remoteProducer = this.remoteProducers.find((eachRemoteProducer) => eachRemoteProducer.producer.id === producer.id);
137
+ if (remoteProducer) {
138
+ this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(this.roomId, (await Constant_1.default.getPublicIp())), this.preapreClientMessageBody(false, remoteProducer.participant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnTrackEnded, response)));
139
+ this.remoteProducers = this.remoteProducers.filter((eachRemoteProducer) => eachRemoteProducer.producer.id !== producer.id);
140
+ }
141
+ });
131
142
  console.log("onNewRemoteProducer producer.paused", producer.paused);
132
143
  await this.roomHandlerDataSource.pipeToRoute(producer);
133
144
  this.remoteProducers.push({ producer: producer, participant: remoteParticipant });
@@ -270,7 +270,7 @@ class SFUEachRoomUserHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
270
270
  console.log("onProducerClosed", payload.message);
271
271
  producerToBeClosed.close();
272
272
  const response = { producerId: producerId };
273
- this.redisBroadcastMessageToTopic(this.selfParticipant.roomId, this.preapreClientMessageBody(false, this.selfParticipant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnTrackEnded, response)));
273
+ this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(this.selfParticipant.roomId, (await Constant_1.default.getPublicIp())), this.preapreClientMessageBody(false, this.selfParticipant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnTrackEnded, response)));
274
274
  this.producers = this.producers.filter((eachProducer) => eachProducer.id !== producerId);
275
275
  }
276
276
  }
@@ -405,10 +405,10 @@ class SFUEachRoomUserHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
405
405
  if (this.isUserPresentInRoom) {
406
406
  try {
407
407
  // console.log("checkAllProducerAndConsuer")
408
- this.producers.forEach((eachProducer) => {
408
+ this.producers.forEach(async (eachProducer) => {
409
409
  if (eachProducer && eachProducer.closed === true) {
410
410
  const response = { producerId: eachProducer.id };
411
- this.redisBroadcastMessageToTopic(this.selfParticipant.roomId, this.preapreClientMessageBody(false, this.selfParticipant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnTrackEnded, response)));
411
+ this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(this.selfParticipant.roomId, (await Constant_1.default.getPublicIp())), this.preapreClientMessageBody(false, this.selfParticipant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnTrackEnded, response)));
412
412
  }
413
413
  });
414
414
  this.producers = this.producers.filter((eachProducer) => eachProducer.closed === false);
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.SFUHandler = void 0;
27
27
  const os = __importStar(require("os"));
28
28
  const SFUEachRoomHandler_1 = require("./SFUEachRoomHandler");
29
+ const ServerHandler_1 = require("../ServerHandler");
29
30
  const Event_1 = require("../models/Event");
30
31
  const EventEmitterHandler_1 = require("../utility/EventEmitterHandler");
31
32
  const mediasoup = require("mediasoup");
@@ -84,8 +85,7 @@ class SFUHandler {
84
85
  async createWorkers() {
85
86
  while (this.workers.length < os.cpus().length) {
86
87
  mediasoup.logLevel = "info";
87
- // const worker: Worker = await mediasoup.createWorker({ rtcMinPort: ServerHandler.getInstance().serverStartRequest.rtcMinPort, rtcMaxPort: ServerHandler.getInstance().serverStartRequest.rtcMaxPort })
88
- const worker = await mediasoup.createWorker();
88
+ const worker = await mediasoup.createWorker({ rtcMinPort: ServerHandler_1.ServerHandler.getInstance().serverStartRequest.rtcMinPort, rtcMaxPort: ServerHandler_1.ServerHandler.getInstance().serverStartRequest.rtcMaxPort });
89
89
  worker.updateSettings({ logLevel: "debug" });
90
90
  this.workers.push(worker);
91
91
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vani-meeting-server",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Vani Meeting Server SDK",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -32,7 +32,6 @@
32
32
  "express": "^4.18.1",
33
33
  "helmet": "^6.0.0",
34
34
  "mediasoup": "^3.10.8",
35
- "pick-port": "^1.0.1",
36
35
  "public-ip": "4.0.3",
37
36
  "rimraf": "^3.0.2",
38
37
  "typescript": "^4.8.3",