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);
|
package/lib/sfu/SFUHandler.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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",
|