vani-meeting-server 2.4.7 → 2.4.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.
package/lib/ServerHandler.d.ts
CHANGED
package/lib/ServerHandler.js
CHANGED
|
@@ -17,6 +17,7 @@ class ServerHandler {
|
|
|
17
17
|
rediHandler;
|
|
18
18
|
webSocketHandler;
|
|
19
19
|
sfuHandler;
|
|
20
|
+
isRedisConnected = true;
|
|
20
21
|
static instance = new ServerHandler();
|
|
21
22
|
static getInstance() {
|
|
22
23
|
return ServerHandler.instance;
|
|
@@ -26,15 +27,27 @@ class ServerHandler {
|
|
|
26
27
|
}
|
|
27
28
|
async initWithServerStartRequest(serverStartRequest) {
|
|
28
29
|
this.serverStartRequest = serverStartRequest;
|
|
30
|
+
this.isRedisConnected = false;
|
|
29
31
|
this.rediHandler = RedisHandler_1.RedisHandler.getInstance();
|
|
30
32
|
this.rediHandler.init();
|
|
31
33
|
await this.rediHandler.connectDB();
|
|
32
34
|
await this.rediHandler.cleanUp();
|
|
35
|
+
this.isRedisConnected = true;
|
|
33
36
|
console.info("On Redis Connected");
|
|
34
37
|
this.sfuHandler = SFUHandler_1.SFUHandler.getInstance();
|
|
35
38
|
await this.sfuHandler.init();
|
|
36
39
|
this.webSocketHandler = new WebSocketHandler_1.WebSocketHandler();
|
|
37
40
|
this.webSocketHandler.connect();
|
|
41
|
+
setInterval(async () => {
|
|
42
|
+
if (this.isRedisConnected === false) {
|
|
43
|
+
RedisHandler_1.RedisHandler.getInstance().releaseRedis();
|
|
44
|
+
this.rediHandler = RedisHandler_1.RedisHandler.getInstance();
|
|
45
|
+
this.rediHandler.init();
|
|
46
|
+
await this.rediHandler.connectDB();
|
|
47
|
+
}
|
|
48
|
+
this.isRedisConnected = false;
|
|
49
|
+
this.isRedisConnected = await RedisHandler_1.RedisHandler.getInstance().isRedisConnected();
|
|
50
|
+
}, 1000 * 60 * 5);
|
|
38
51
|
}
|
|
39
52
|
async startPlainTransportForBroadcasting(plainTransportPayload, forRoomid) {
|
|
40
53
|
this.sfuHandler?.startPlainTransportForBroadcasting(plainTransportPayload, forRoomid);
|
|
@@ -55,7 +68,7 @@ class ServerHandler {
|
|
|
55
68
|
return await RedisHandler_1.RedisHandler.getInstance().getAllParticipants(roomId);
|
|
56
69
|
}
|
|
57
70
|
isServerWorking = async () => {
|
|
58
|
-
const isConnected = RedisHandler_1.RedisHandler.getInstance().isRedisConnected() && SFUHandler_1.SFUHandler.getInstance().isSFURunning() && this.webSocketHandler && this.webSocketHandler.lastKnownWebSocketStatusIsActive;
|
|
71
|
+
const isConnected = await RedisHandler_1.RedisHandler.getInstance().isRedisConnected() && SFUHandler_1.SFUHandler.getInstance().isSFURunning() && this.webSocketHandler && this.webSocketHandler.lastKnownWebSocketStatusIsActive;
|
|
59
72
|
if (this.webSocketHandler) {
|
|
60
73
|
this.webSocketHandler.lastKnownWebSocketStatusIsActive = false;
|
|
61
74
|
const websocket = new ws_1.default("ws://localhost:" + this.serverStartRequest.port + "/?serverstatuscheck=true");
|
|
@@ -8,13 +8,13 @@ export declare enum RedisKeyType {
|
|
|
8
8
|
IpAddress = "ipAddress"
|
|
9
9
|
}
|
|
10
10
|
export declare class RedisHandler {
|
|
11
|
-
private static redisHandler
|
|
11
|
+
private static redisHandler?;
|
|
12
12
|
private redisClient;
|
|
13
13
|
redisPublisher: RedisClientType;
|
|
14
14
|
redisSubscriber: RedisClientType;
|
|
15
15
|
static getInstance(): RedisHandler;
|
|
16
16
|
init(): void;
|
|
17
|
-
isRedisConnected: () => boolean
|
|
17
|
+
isRedisConnected: () => Promise<boolean>;
|
|
18
18
|
connectDB(): Promise<void>;
|
|
19
19
|
cleanUp(): Promise<string | undefined>;
|
|
20
20
|
cleanUpRoomId(roomId: string): Promise<void>;
|
|
@@ -34,4 +34,5 @@ export declare class RedisHandler {
|
|
|
34
34
|
getAllParticipants(roomId: string): Promise<Participant[]>;
|
|
35
35
|
getAllRoomsId(): Promise<string[] | undefined>;
|
|
36
36
|
private updateRoomCleanupTimeOut;
|
|
37
|
+
releaseRedis: () => Promise<void>;
|
|
37
38
|
}
|
|
@@ -22,6 +22,9 @@ class RedisHandler {
|
|
|
22
22
|
redisPublisher;
|
|
23
23
|
redisSubscriber;
|
|
24
24
|
static getInstance() {
|
|
25
|
+
if (!this.redisHandler) {
|
|
26
|
+
this.redisHandler = new RedisHandler();
|
|
27
|
+
}
|
|
25
28
|
return this.redisHandler;
|
|
26
29
|
}
|
|
27
30
|
init() {
|
|
@@ -35,8 +38,17 @@ class RedisHandler {
|
|
|
35
38
|
console.log("init", err);
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
|
-
isRedisConnected = () => {
|
|
39
|
-
|
|
41
|
+
isRedisConnected = async () => {
|
|
42
|
+
try {
|
|
43
|
+
if (this.redisClient.isReady && this.redisPublisher.isReady && this.redisSubscriber.isReady) {
|
|
44
|
+
const keys = await this.redisClient.keys("*");
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
40
52
|
};
|
|
41
53
|
async connectDB() {
|
|
42
54
|
try {
|
|
@@ -295,5 +307,11 @@ class RedisHandler {
|
|
|
295
307
|
console.log("updateRoomCleanupTimeOut", err);
|
|
296
308
|
}
|
|
297
309
|
}
|
|
310
|
+
releaseRedis = async () => {
|
|
311
|
+
RedisHandler.redisHandler = undefined;
|
|
312
|
+
this.redisClient.disconnect();
|
|
313
|
+
this.redisPublisher.disconnect();
|
|
314
|
+
this.redisSubscriber.disconnect();
|
|
315
|
+
};
|
|
298
316
|
}
|
|
299
317
|
exports.RedisHandler = RedisHandler;
|