vani-meeting-server 2.0.6 → 2.0.8

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.
@@ -22,6 +22,7 @@ export declare class RedisHandler {
22
22
  ip: string;
23
23
  port: number;
24
24
  }[]>;
25
+ deleteIpForRoomId(roomId: string, ipAddress: string): Promise<void>;
25
26
  storeMesagesForRoom(roomId: string, messagePayload: MessagePayload): Promise<void>;
26
27
  fetchMessagesForRoom(roomId: string): Promise<MessagePayload[]>;
27
28
  storeMeetingTimeForRoom(roomId: string, time?: number): Promise<void>;
@@ -62,6 +62,7 @@ class RedisHandler {
62
62
  }
63
63
  oldIps.push({ ip: ipAddress, port: ServerHandler_1.ServerHandler.getInstance().serverStartRequest.port });
64
64
  await this.redisClient.hSet(roomId, RedisKeyType.IpAddress, JSON.stringify(oldIps));
65
+ this.updateRoomCleanupTimeOut(roomId);
65
66
  }
66
67
  async fetchIpsForRoomId(roomId) {
67
68
  const ipAddress = await this.redisClient.hGet(roomId, RedisKeyType.IpAddress);
@@ -74,6 +75,12 @@ class RedisHandler {
74
75
  return [];
75
76
  }
76
77
  }
78
+ async deleteIpForRoomId(roomId, ipAddress) {
79
+ const oldIps = await this.fetchIpsForRoomId(roomId);
80
+ const newIps = oldIps.filter((eachOldIp) => !(eachOldIp.ip === ipAddress && eachOldIp.port === ServerHandler_1.ServerHandler.getInstance().serverStartRequest.port));
81
+ await this.redisClient.hSet(roomId, RedisKeyType.IpAddress, JSON.stringify(newIps));
82
+ this.updateRoomCleanupTimeOut(roomId);
83
+ }
77
84
  //Messages
78
85
  async storeMesagesForRoom(roomId, messagePayload) {
79
86
  const messages = await this.fetchMessagesForRoom(roomId);
@@ -388,6 +388,7 @@ class SFUEachRoomHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
388
388
  EventEmitterHandler_1.EventEmitterHandler.getInstance().vaniEventEmitter.emit(Event_1.VaniEvent.OnNewMeetingEnded, this.roomId);
389
389
  }
390
390
  EventEmitterHandler_1.EventEmitterHandler.getInstance().vaniEventEmitter.emit(Event_1.VaniEvent.OnAllParticipantLeftOnServer, this.roomId);
391
+ RedisHandler_1.RedisHandler.getInstance().deleteIpForRoomId(this.roomId, await Constant_1.default.getPublicIp());
391
392
  this.eachRoomMutliserverHandler?.cleanUp();
392
393
  this.eachRoomMutliserverHandler = undefined;
393
394
  this.roomPaticipants.forEach((sfuEachRoomUser) => {
@@ -49,18 +49,22 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
49
49
  if (message.type === EachSocketConnectionHandler_1.MultiSystemEvents.OnNewServerJoinedForRoom) {
50
50
  const pipeTransportAndPort = await this.createPipeTransport(message.data.ip);
51
51
  if (pipeTransportAndPort) {
52
- await pipeTransportAndPort.transport?.connect({ ip: message.data.ip, port: message.data.port });
53
- this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(message.roomId, message.data.ip), this.prepareMutilSystemEvents(EachSocketConnectionHandler_1.MultiSystemEvents.OnConnectPipe, message.roomId, { ip: await Constant_1.default.getPublicIp(), port: pipeTransportAndPort.port }));
52
+ if (!pipeTransportAndPort.transport.tuple.remoteIp) {
53
+ await pipeTransportAndPort.transport?.connect({ ip: message.data.ip, port: message.data.port });
54
+ this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(message.roomId, message.data.ip), this.prepareMutilSystemEvents(EachSocketConnectionHandler_1.MultiSystemEvents.OnConnectPipe, message.roomId, { ip: await Constant_1.default.getPublicIp(), port: pipeTransportAndPort.port }));
55
+ }
54
56
  }
55
57
  }
56
58
  else if (message.type === EachSocketConnectionHandler_1.MultiSystemEvents.OnConnectPipe) {
57
59
  const ip = message.data.ip;
58
60
  if (this.pipeTransports[ip]) {
59
- await this.pipeTransports[ip].transport.connect({ ip: ip, port: message.data.port });
60
- this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(message.roomId, message.data.ip), this.prepareMutilSystemEvents(EachSocketConnectionHandler_1.MultiSystemEvents.OnPipeConnected, message.roomId, { ip: await Constant_1.default.getPublicIp() }));
61
- this.roomHandlerDataSource.getAllProducerForRoom().forEach(async (eachRoomProducer) => {
62
- await this.consumeProductAndInfrom(this.pipeTransports[ip].transport, ip, eachRoomProducer);
63
- });
61
+ if (!this.pipeTransports[ip].transport.tuple.remoteIp) {
62
+ await this.pipeTransports[ip].transport.connect({ ip: ip, port: message.data.port });
63
+ this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(message.roomId, message.data.ip), this.prepareMutilSystemEvents(EachSocketConnectionHandler_1.MultiSystemEvents.OnPipeConnected, message.roomId, { ip: await Constant_1.default.getPublicIp() }));
64
+ this.roomHandlerDataSource.getAllProducerForRoom().forEach(async (eachRoomProducer) => {
65
+ await this.consumeProductAndInfrom(this.pipeTransports[ip].transport, ip, eachRoomProducer);
66
+ });
67
+ }
64
68
  }
65
69
  }
66
70
  else if (message.type === EachSocketConnectionHandler_1.MultiSystemEvents.OnPipeConnected) {
@@ -85,6 +89,15 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
85
89
  this.onRemoteConsumerClosed(message.data.consumerId);
86
90
  }
87
91
  }
92
+ else if (message.type === EachSocketConnectionHandler_1.MultiSystemEvents.OnPipeClosed) {
93
+ console.log("on remote");
94
+ if (message.data.ip) {
95
+ if (this.pipeTransports[message.data.ip]) {
96
+ this.pipeTransports[message.data.ip].transport.close();
97
+ delete this.pipeTransports[message.data.ip];
98
+ }
99
+ }
100
+ }
88
101
  };
89
102
  createPipeTransport = async (ip) => {
90
103
  if (this.pipeTransports[ip]) {
@@ -97,11 +110,12 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
97
110
  listenIp: { ip: '0.0.0.0', announcedIp: await Constant_1.default.getPublicIp() }
98
111
  });
99
112
  if (pipeTransport) {
100
- pipeTransport.on("@close", () => {
113
+ pipeTransport.on("@close", async () => {
101
114
  console.log("Pipe Closed");
102
115
  for (const key of Object.keys(this.pipeTransports)) {
103
116
  if (this.pipeTransports[key].transport.id === pipeTransport.id) {
104
117
  delete this.pipeTransports[key];
118
+ this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(this.roomId, key), this.prepareMutilSystemEvents(EachSocketConnectionHandler_1.MultiSystemEvents.OnPipeClosed, this.roomId, { ip: await Constant_1.default.getPublicIp() }));
105
119
  break;
106
120
  }
107
121
  }
@@ -68,7 +68,8 @@ export declare enum MultiSystemEvents {
68
68
  OnConsumerData = "OnConsumerData",
69
69
  OnRemoteConsumerClosed = "OnRemoteConsumerClosed",
70
70
  OnConnectPipe = "OnConnectPipe",
71
- OnPipeConnected = "OnPipeConnected"
71
+ OnPipeConnected = "OnPipeConnected",
72
+ OnPipeClosed = "OnPipeClosed"
72
73
  }
73
74
  export declare enum LocalMessageType {
74
75
  OnNewUserJoinedRoom = "onNewUserJoinedRoom",
@@ -87,6 +87,7 @@ var MultiSystemEvents;
87
87
  MultiSystemEvents["OnRemoteConsumerClosed"] = "OnRemoteConsumerClosed";
88
88
  MultiSystemEvents["OnConnectPipe"] = "OnConnectPipe";
89
89
  MultiSystemEvents["OnPipeConnected"] = "OnPipeConnected";
90
+ MultiSystemEvents["OnPipeClosed"] = "OnPipeClosed";
90
91
  })(MultiSystemEvents = exports.MultiSystemEvents || (exports.MultiSystemEvents = {}));
91
92
  var LocalMessageType;
92
93
  (function (LocalMessageType) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vani-meeting-server",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "description": "Vani Meeting Server SDK",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",