vani-meeting-server 2.0.2 → 2.0.4
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.
|
@@ -19,4 +19,5 @@ export declare class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket {
|
|
|
19
19
|
consumeProductAndInfrom: (transport: PipeTransport, ipAddress: string, producer: SFUEachRoomProducer) => Promise<void>;
|
|
20
20
|
onNewLocalProducer(producer: SFUEachRoomProducer): Promise<void>;
|
|
21
21
|
onNewRemoteProducer(producer: Producer): Promise<void>;
|
|
22
|
+
private onRemoteConsumerClosed;
|
|
22
23
|
}
|
|
@@ -75,10 +75,16 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
75
75
|
const ip = message.data.ip;
|
|
76
76
|
if (this.pipeTransports[ip]) {
|
|
77
77
|
const producer = await this.pipeTransports[ip].transport.produce({ rtpParameters: message.data.rtpParameters, kind: message.data.kind, appData: message.data.appData });
|
|
78
|
+
producer.appData.consumerId = message.data.consumerId;
|
|
78
79
|
this.onNewRemoteProducer(producer);
|
|
79
80
|
console.log("MultiSystemEvents.OnConsumerData", producer);
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
else if (message.type === EachSocketConnectionHandler_1.MultiSystemEvents.OnRemoteConsumerClosed) {
|
|
84
|
+
if (message.data.consumerId) {
|
|
85
|
+
this.onRemoteConsumerClosed(message.data.consumerId);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
82
88
|
};
|
|
83
89
|
createPipeTransport = async (ip) => {
|
|
84
90
|
if (this.pipeTransports[ip]) {
|
|
@@ -113,7 +119,12 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
113
119
|
const consumer = await transport.consume({ producerId: producer.producer.id });
|
|
114
120
|
console.log("consumeProductAndInfrom consumer.paused", consumer.paused);
|
|
115
121
|
if (consumer) {
|
|
116
|
-
|
|
122
|
+
consumer.on("@producerclose", async () => {
|
|
123
|
+
console.log("Transport producerclose closed");
|
|
124
|
+
consumer.close();
|
|
125
|
+
this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(this.roomId, ipAddress), this.prepareMutilSystemEvents(EachSocketConnectionHandler_1.MultiSystemEvents.OnRemoteConsumerClosed, this.roomId, { ip: await Constant_1.default.getPublicIp(), consumerId: consumer.id }));
|
|
126
|
+
});
|
|
127
|
+
this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(this.roomId, ipAddress), this.prepareMutilSystemEvents(EachSocketConnectionHandler_1.MultiSystemEvents.OnConsumerData, this.roomId, { ip: await Constant_1.default.getPublicIp(), rtpParameters: consumer?.rtpParameters, kind: consumer.kind, appData: producer.producer.appData, consumerId: consumer.id }));
|
|
117
128
|
}
|
|
118
129
|
}
|
|
119
130
|
};
|
|
@@ -131,15 +142,17 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
131
142
|
if (remoteParticipant) {
|
|
132
143
|
await producer.resume();
|
|
133
144
|
producer.on("@close", async () => {
|
|
134
|
-
|
|
135
|
-
|
|
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);
|
|
145
|
+
if (producer.appData.consumerId) {
|
|
146
|
+
this.onRemoteConsumerClosed(producer.appData.consumerId);
|
|
140
147
|
}
|
|
148
|
+
// console.log("On Producer closed", producer)
|
|
149
|
+
// const response = { producerId: producer.id }
|
|
150
|
+
// const remoteProducer = this.remoteProducers.find((eachRemoteProducer) => eachRemoteProducer.producer.id === producer.id)
|
|
151
|
+
// if (remoteProducer) {
|
|
152
|
+
// this.redisBroadcastMessageToTopic(Utility.getTopicForRoomIdAndIp(this.roomId, (await Constant.getPublicIp())!), this.preapreClientMessageBody(false, remoteProducer.participant, this.preapreWebSocketMessageBody(SFUMessageType.OnTrackEnded, response)));
|
|
153
|
+
// this.remoteProducers = this.remoteProducers.filter((eachRemoteProducer) => eachRemoteProducer.producer.id !== producer.id)
|
|
154
|
+
// }
|
|
141
155
|
});
|
|
142
|
-
console.log("onNewRemoteProducer producer.paused", producer.paused);
|
|
143
156
|
await this.roomHandlerDataSource.pipeToRoute(producer);
|
|
144
157
|
this.remoteProducers.push({ producer: producer, participant: remoteParticipant });
|
|
145
158
|
this.roomHandlerDataSource.onNewProducer(producer, remoteParticipant);
|
|
@@ -148,5 +161,14 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
148
161
|
}
|
|
149
162
|
}
|
|
150
163
|
}
|
|
164
|
+
onRemoteConsumerClosed = async (remoteConsumerId) => {
|
|
165
|
+
const remoteProducer = this.remoteProducers.find((eachRemoteProducer) => eachRemoteProducer.producer.appData.consumerId === remoteConsumerId);
|
|
166
|
+
if (remoteProducer) {
|
|
167
|
+
remoteProducer.producer.close();
|
|
168
|
+
const response = { producerId: remoteProducer.producer.id };
|
|
169
|
+
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)));
|
|
170
|
+
this.remoteProducers = this.remoteProducers.filter((eachRemoteProducer) => eachRemoteProducer.producer.id !== remoteProducer.producer.id);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
151
173
|
}
|
|
152
174
|
exports.SFUEachRoomMutliServerHandler = SFUEachRoomMutliServerHandler;
|
|
@@ -66,6 +66,7 @@ export declare enum SFUMessageType {
|
|
|
66
66
|
export declare enum MultiSystemEvents {
|
|
67
67
|
OnNewServerJoinedForRoom = "OnNewServerJoinedForRoom",
|
|
68
68
|
OnConsumerData = "OnConsumerData",
|
|
69
|
+
OnRemoteConsumerClosed = "OnRemoteConsumerClosed",
|
|
69
70
|
OnConnectPipe = "OnConnectPipe",
|
|
70
71
|
OnPipeConnected = "OnPipeConnected"
|
|
71
72
|
}
|
|
@@ -84,6 +84,7 @@ var MultiSystemEvents;
|
|
|
84
84
|
(function (MultiSystemEvents) {
|
|
85
85
|
MultiSystemEvents["OnNewServerJoinedForRoom"] = "OnNewServerJoinedForRoom";
|
|
86
86
|
MultiSystemEvents["OnConsumerData"] = "OnConsumerData";
|
|
87
|
+
MultiSystemEvents["OnRemoteConsumerClosed"] = "OnRemoteConsumerClosed";
|
|
87
88
|
MultiSystemEvents["OnConnectPipe"] = "OnConnectPipe";
|
|
88
89
|
MultiSystemEvents["OnPipeConnected"] = "OnPipeConnected";
|
|
89
90
|
})(MultiSystemEvents = exports.MultiSystemEvents || (exports.MultiSystemEvents = {}));
|