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
- 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 }));
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
- 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);
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 = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vani-meeting-server",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "Vani Meeting Server SDK",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",