vani-meeting-server 2.9.4 → 2.9.5-beta2
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/base/BaseSFUWebsocket.d.ts +2 -1
- package/lib/base/BaseSFUWebsocket.js +1 -0
- package/lib/index.js +10 -0
- package/lib/sfu/SFUEachRoomHandler.js +13 -8
- package/lib/sfu/SFUEachRoomMutliServerHandler.js +35 -15
- package/lib/sfu/SFUEachRoomUserHandler.js +24 -14
- package/lib/webrtc/WebrtcHandler.d.ts +15 -0
- package/lib/webrtc/WebrtcHandler.js +34 -0
- package/lib/websocket/EachSocketConnectionHandler.d.ts +8 -1
- package/lib/websocket/EachSocketConnectionHandler.js +13 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Participant } from "../models/Participant";
|
|
2
|
+
import { WebrtcMessageBody } from "../webrtc/WebrtcHandler";
|
|
2
3
|
import { ClientMessageBody, MultiSystemEvents, MultiSystemEventsBody, WebSocketEvents, WebSocketMessageBody } from "../websocket/EachSocketConnectionHandler";
|
|
3
4
|
export declare class BaseSFUWebsocket {
|
|
4
|
-
protected redisBroadcastMessageToTopic(topic: string, data: WebSocketMessageBody | ClientMessageBody | MultiSystemEventsBody): Promise<void>;
|
|
5
|
+
protected redisBroadcastMessageToTopic(topic: string, data: WebSocketMessageBody | ClientMessageBody | MultiSystemEventsBody | WebrtcMessageBody): Promise<void>;
|
|
5
6
|
protected prepareMutilSystemEvents(multiSystemEvent: MultiSystemEvents, roomId: string, data: any): MultiSystemEventsBody;
|
|
6
7
|
protected preapreClientMessageBody(shouldSendToSelf: boolean, senderParticipant: Participant, broadcastMessage: WebSocketMessageBody): ClientMessageBody;
|
|
7
8
|
protected preapreWebSocketMessageBody(type: WebSocketEvents, data: any): WebSocketMessageBody;
|
|
@@ -10,6 +10,7 @@ class BaseSFUWebsocket {
|
|
|
10
10
|
RedisHandler_1.RedisHandler.getInstance().redisPublisher.publish(topic, stringifyData);
|
|
11
11
|
if (data.interfaceName !== 'MultiSystemEventsBody') {
|
|
12
12
|
EventEmitterHandler_1.EventEmitterHandler.getInstance().vaniEventEmitter.emit(topic, stringifyData);
|
|
13
|
+
console.log("Message sent", topic, stringifyData);
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
//Utilility function
|
package/lib/index.js
CHANGED
|
@@ -14,8 +14,18 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const Utility_1 = require("./utility/Utility");
|
|
17
18
|
__exportStar(require("./models/Event"), exports);
|
|
18
19
|
__exportStar(require("./models/WebSocketServerStartRequest"), exports);
|
|
19
20
|
__exportStar(require("./models/Logs"), exports);
|
|
20
21
|
__exportStar(require("./ServerHandler"), exports);
|
|
21
22
|
__exportStar(require("./utility/EventEmitterHandler"), exports);
|
|
23
|
+
process.on('uncaughtException', (err) => {
|
|
24
|
+
console.warn('There was an uncaught error', err);
|
|
25
|
+
Utility_1.Utility.sendVaniError(err);
|
|
26
|
+
// By NOT calling process.exit(1), the pod stays running
|
|
27
|
+
});
|
|
28
|
+
process.on('unhandledRejection', (err) => {
|
|
29
|
+
// console.warn('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
30
|
+
Utility_1.Utility.sendVaniError(err);
|
|
31
|
+
});
|
|
@@ -237,9 +237,9 @@ class SFUEachRoomHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
|
|
|
237
237
|
interval: 500
|
|
238
238
|
});
|
|
239
239
|
this.audioLevelObserver.on("volumes", (audioLevelVolumes) => {
|
|
240
|
-
audioLevelVolumes.forEach((eachAudioLevelVol) => {
|
|
240
|
+
audioLevelVolumes.forEach(async (eachAudioLevelVol) => {
|
|
241
241
|
const speakerUserId = eachAudioLevelVol.producer.appData.userId;
|
|
242
|
-
const participant = RedisHandler_1.RedisHandler.getInstance().getParticipantByUserId(this.roomId, speakerUserId);
|
|
242
|
+
const participant = await RedisHandler_1.RedisHandler.getInstance().getParticipantByUserId(this.roomId, speakerUserId);
|
|
243
243
|
if (participant) {
|
|
244
244
|
this.redisBroadcastMessageToTopic(this.roomId, this.preapreClientMessageBody(true, participant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnAudioVolumeChanged, { volume: eachAudioLevelVol.volume, userId: speakerUserId })));
|
|
245
245
|
}
|
|
@@ -252,13 +252,13 @@ class SFUEachRoomHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
|
|
|
252
252
|
this.audioObserver = await this.sendRouter.createActiveSpeakerObserver({
|
|
253
253
|
interval: 100
|
|
254
254
|
});
|
|
255
|
-
this.audioObserver.on("dominantspeaker", (speakerProducer) => {
|
|
255
|
+
this.audioObserver.on("dominantspeaker", async (speakerProducer) => {
|
|
256
256
|
const speakerUserId = speakerProducer.producer.appData.userId;
|
|
257
257
|
if (this.roomPaticipants.size < 2) {
|
|
258
258
|
return;
|
|
259
259
|
}
|
|
260
260
|
else {
|
|
261
|
-
const participant = RedisHandler_1.RedisHandler.getInstance().getParticipantByUserId(this.roomId, speakerUserId);
|
|
261
|
+
const participant = await RedisHandler_1.RedisHandler.getInstance().getParticipantByUserId(this.roomId, speakerUserId);
|
|
262
262
|
if (participant !== undefined) {
|
|
263
263
|
this.redisBroadcastMessageToTopic(this.roomId, this.preapreClientMessageBody(true, participant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnSpeakerChanged, { speakerUserId: speakerUserId })));
|
|
264
264
|
ServerHandler_1.ServerHandler.getInstance().serverStartRequest && ServerHandler_1.ServerHandler.getInstance().serverStartRequest.logLevel !== WebSocketServerStartRequest_1.LogLevel.None && console.log("dominantspeaker", speakerUserId);
|
|
@@ -352,11 +352,16 @@ class SFUEachRoomHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
|
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
async addAudioObserverForProducer(audioProducer) {
|
|
355
|
-
|
|
356
|
-
this.audioObserver
|
|
355
|
+
try {
|
|
356
|
+
if (this.audioObserver) {
|
|
357
|
+
this.audioObserver?.addProducer({ producerId: audioProducer.id });
|
|
358
|
+
}
|
|
359
|
+
if (this.audioLevelObserver) {
|
|
360
|
+
this.audioLevelObserver?.addProducer({ producerId: audioProducer.id });
|
|
361
|
+
}
|
|
357
362
|
}
|
|
358
|
-
|
|
359
|
-
|
|
363
|
+
catch (err) {
|
|
364
|
+
Utility_1.Utility.sendVaniError(err);
|
|
360
365
|
}
|
|
361
366
|
}
|
|
362
367
|
onUserLeft(participant) {
|
|
@@ -54,8 +54,13 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
54
54
|
const pipeTransportAndPort = await this.createPipeTransport(message.data.ip);
|
|
55
55
|
if (pipeTransportAndPort && await Constant_1.default.getPublicIp() !== message.data.ip) {
|
|
56
56
|
if (!pipeTransportAndPort.transport.tuple.remoteIp) {
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
try {
|
|
58
|
+
await pipeTransportAndPort.transport?.connect({ ip: message.data.ip, port: message.data.port });
|
|
59
|
+
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 }));
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
Utility_1.Utility.sendVaniError(err);
|
|
63
|
+
}
|
|
59
64
|
}
|
|
60
65
|
}
|
|
61
66
|
}
|
|
@@ -63,11 +68,16 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
63
68
|
const ip = message.data.ip;
|
|
64
69
|
if (this.pipeTransports[ip] && await Constant_1.default.getPublicIp() !== ip) {
|
|
65
70
|
if (!this.pipeTransports[ip].transport.tuple.remoteIp) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
try {
|
|
72
|
+
await this.pipeTransports[ip].transport.connect({ ip: ip, port: message.data.port });
|
|
73
|
+
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() }));
|
|
74
|
+
this.roomHandlerDataSource.getAllProducerForRoom().forEach(async (eachRoomProducer) => {
|
|
75
|
+
await this.consumeProductAndInfrom(this.pipeTransports[ip].transport, ip, eachRoomProducer);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
Utility_1.Utility.sendVaniError(err);
|
|
80
|
+
}
|
|
71
81
|
}
|
|
72
82
|
}
|
|
73
83
|
}
|
|
@@ -82,10 +92,15 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
82
92
|
else if (message.type === EachSocketConnectionHandler_1.MultiSystemEvents.OnConsumerData) {
|
|
83
93
|
const ip = message.data.ip;
|
|
84
94
|
if (this.pipeTransports[ip] && await Constant_1.default.getPublicIp() !== ip) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
95
|
+
try {
|
|
96
|
+
const producer = await this.pipeTransports[ip].transport.produce({ rtpParameters: message.data.rtpParameters, kind: message.data.kind, appData: message.data.appData });
|
|
97
|
+
producer.appData.consumerId = message.data.consumerId;
|
|
98
|
+
this.onNewRemoteProducer(producer);
|
|
99
|
+
ServerHandler_1.ServerHandler.getInstance().serverStartRequest && ServerHandler_1.ServerHandler.getInstance().serverStartRequest.logLevel !== WebSocketServerStartRequest_1.LogLevel.None && console.log("MultiSystemEvents.OnConsumerData", producer);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
Utility_1.Utility.sendVaniError(err);
|
|
103
|
+
}
|
|
89
104
|
}
|
|
90
105
|
}
|
|
91
106
|
else if (message.type === EachSocketConnectionHandler_1.MultiSystemEvents.OnRemoteConsumerClosed) {
|
|
@@ -171,10 +186,15 @@ class SFUEachRoomMutliServerHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket
|
|
|
171
186
|
// this.remoteProducers = this.remoteProducers.filter((eachRemoteProducer) => eachRemoteProducer.producer.id !== producer.id)
|
|
172
187
|
// }
|
|
173
188
|
});
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
189
|
+
try {
|
|
190
|
+
await this.roomHandlerDataSource.pipeToRoute(producer);
|
|
191
|
+
this.remoteProducers.push({ producer: producer, participant: remoteParticipant });
|
|
192
|
+
this.roomHandlerDataSource.onNewProducer(producer, remoteParticipant);
|
|
193
|
+
this.redisBroadcastMessageToTopic(Utility_1.Utility.getTopicForRoomIdAndIp(this.roomId, (await Constant_1.default.getPublicIp())), this.preapreClientMessageBody(false, remoteParticipant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnNewProducer, { producer: { id: producer.id, appData: producer.appData } })));
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
Utility_1.Utility.sendVaniError(err);
|
|
197
|
+
}
|
|
178
198
|
}
|
|
179
199
|
}
|
|
180
200
|
}
|
|
@@ -248,23 +248,33 @@ class SFUEachRoomUserHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
|
|
|
248
248
|
}
|
|
249
249
|
};
|
|
250
250
|
async onTransportProduceSyncRequest(payload) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
251
|
+
try {
|
|
252
|
+
ServerHandler_1.ServerHandler.getInstance().serverStartRequest && ServerHandler_1.ServerHandler.getInstance().serverStartRequest.logLevel !== WebSocketServerStartRequest_1.LogLevel.None && console.log("onTransportProduceSyncRequest");
|
|
253
|
+
if (this.roomHandlerDataSource) {
|
|
254
|
+
const producer = await this.webrtcSendTransport?.produce(payload.message);
|
|
255
|
+
if (producer) {
|
|
256
|
+
this.addObserverForProducer(producer);
|
|
257
|
+
await this.onNewProducer(producer);
|
|
258
|
+
if (producer.kind === 'audio') {
|
|
259
|
+
try {
|
|
260
|
+
this.roomHandlerDataSource.addAudioObserverForProducer(producer);
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
Utility_1.Utility.sendVaniError(err);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
this.redisBroadcastMessageToTopic(this.selfParticipant.userId, this.preapreClientMessageBody(true, this.selfParticipant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnProduceSyncDone, { transportId: this.webrtcSendTransport?.id, producerId: producer.id, appData: producer.appData })));
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
const errorPayload = { message: "Not able to create Producer - onTransportProduceSyncRequest - SFUEachRoomUserHandler", extraData: payload };
|
|
270
|
+
Utility_1.Utility.checkAndSendLogs({ logLevel: WebSocketServerStartRequest_1.LogLevel.Error, roomId: this.selfParticipant.roomId, payload: errorPayload, logType: Logs_1.LogType.LogTypeError });
|
|
271
|
+
ServerHandler_1.ServerHandler.getInstance().serverStartRequest && ServerHandler_1.ServerHandler.getInstance().serverStartRequest.logLevel !== WebSocketServerStartRequest_1.LogLevel.None && console.log(" Error in creating producer ", payload);
|
|
259
272
|
}
|
|
260
|
-
this.redisBroadcastMessageToTopic(this.selfParticipant.userId, this.preapreClientMessageBody(true, this.selfParticipant, this.preapreWebSocketMessageBody(EachSocketConnectionHandler_1.SFUMessageType.OnProduceSyncDone, { transportId: this.webrtcSendTransport?.id, producerId: producer.id, appData: producer.appData })));
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
const errorPayload = { message: "Not able to create Producer - onTransportProduceSyncRequest - SFUEachRoomUserHandler", extraData: payload };
|
|
264
|
-
Utility_1.Utility.checkAndSendLogs({ logLevel: WebSocketServerStartRequest_1.LogLevel.Error, roomId: this.selfParticipant.roomId, payload: errorPayload, logType: Logs_1.LogType.LogTypeError });
|
|
265
|
-
ServerHandler_1.ServerHandler.getInstance().serverStartRequest && ServerHandler_1.ServerHandler.getInstance().serverStartRequest.logLevel !== WebSocketServerStartRequest_1.LogLevel.None && console.log(" Error in creating producer ", payload);
|
|
266
273
|
}
|
|
267
274
|
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
Utility_1.Utility.sendVaniError(err);
|
|
277
|
+
}
|
|
268
278
|
}
|
|
269
279
|
async onResumeProducer(payload) {
|
|
270
280
|
const producerId = payload.message.producerId;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseSFUWebsocket } from "../base/BaseSFUWebsocket";
|
|
2
|
+
import { Participant } from "../models/Participant";
|
|
3
|
+
import { WebrtcMessageType } from "../websocket/EachSocketConnectionHandler";
|
|
4
|
+
export interface WebrtcMessageBody {
|
|
5
|
+
interfaceName: 'WebrtcMessageBody';
|
|
6
|
+
to: string;
|
|
7
|
+
type: WebrtcMessageType;
|
|
8
|
+
sender: string;
|
|
9
|
+
data: any;
|
|
10
|
+
}
|
|
11
|
+
export declare class WebrtcHandler extends BaseSFUWebsocket {
|
|
12
|
+
static instance: WebrtcHandler;
|
|
13
|
+
static getInstance(): WebrtcHandler;
|
|
14
|
+
onNewMessage: (payload: WebrtcMessageBody, senderParticipant?: Participant) => Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebrtcHandler = void 0;
|
|
4
|
+
const BaseSFUWebsocket_1 = require("../base/BaseSFUWebsocket");
|
|
5
|
+
const RedisHandler_1 = require("../lib/redis/RedisHandler");
|
|
6
|
+
const EachSocketConnectionHandler_1 = require("../websocket/EachSocketConnectionHandler");
|
|
7
|
+
class WebrtcHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
|
|
8
|
+
static instance = new WebrtcHandler();
|
|
9
|
+
static getInstance() {
|
|
10
|
+
return WebrtcHandler.instance;
|
|
11
|
+
}
|
|
12
|
+
onNewMessage = async (payload, senderParticipant) => {
|
|
13
|
+
console.log("onNewMessage webrtc", payload);
|
|
14
|
+
if (senderParticipant && senderParticipant.roomId) {
|
|
15
|
+
const [toParticipant] = await Promise.all([
|
|
16
|
+
RedisHandler_1.RedisHandler.getInstance().getParticipantByUserId(senderParticipant.roomId, payload.to)
|
|
17
|
+
]);
|
|
18
|
+
if (toParticipant) {
|
|
19
|
+
if (payload.type === EachSocketConnectionHandler_1.WebrtcMessageType.SendOffer
|
|
20
|
+
|| payload.type === EachSocketConnectionHandler_1.WebrtcMessageType.SendAnswer) {
|
|
21
|
+
const sendPayload = payload.data;
|
|
22
|
+
sendPayload.sender = senderParticipant;
|
|
23
|
+
this.redisBroadcastMessageToTopic(toParticipant.userId, this.preapreClientMessageBody(false, senderParticipant, this.preapreWebSocketMessageBody(payload.type, sendPayload)));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const sendPayload = payload.data;
|
|
27
|
+
sendPayload.sender = senderParticipant;
|
|
28
|
+
this.redisBroadcastMessageToTopic(toParticipant.userId, this.preapreClientMessageBody(false, senderParticipant, this.preapreWebSocketMessageBody(payload.type, sendPayload)));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
exports.WebrtcHandler = WebrtcHandler;
|
|
@@ -72,6 +72,12 @@ export declare enum SFUMessageType {
|
|
|
72
72
|
OnConsumerLayerChange = "OnConsumerLayerChange",
|
|
73
73
|
OnProducerNotFound = "OnProducerNotFound"
|
|
74
74
|
}
|
|
75
|
+
export declare enum WebrtcMessageType {
|
|
76
|
+
WebrtcMessage = "WebrtcMessage",
|
|
77
|
+
SendOffer = "SendOffer",
|
|
78
|
+
IceCandidate = "IceCandidate",
|
|
79
|
+
SendAnswer = "SendAnswer"
|
|
80
|
+
}
|
|
75
81
|
export declare enum MultiSystemEvents {
|
|
76
82
|
OnNewServerJoinedForRoom = "OnNewServerJoinedForRoom",
|
|
77
83
|
OnConsumerData = "OnConsumerData",
|
|
@@ -87,7 +93,7 @@ export declare enum LocalMessageType {
|
|
|
87
93
|
SocketMessage = "socketMessage",
|
|
88
94
|
SelfLeftForceFully = "SelfLeftForceFully"
|
|
89
95
|
}
|
|
90
|
-
export type WebSocketEvents = SFUMessageType | WebSocketBasicEvents | LocalMessageType | MultiSystemEvents | SyncLocalEvent;
|
|
96
|
+
export type WebSocketEvents = SFUMessageType | WebSocketBasicEvents | LocalMessageType | MultiSystemEvents | SyncLocalEvent | WebrtcMessageType;
|
|
91
97
|
export interface SyncLocalEvent {
|
|
92
98
|
interfaceName: 'SyncLocalEvent';
|
|
93
99
|
type: MultiSystemEvents;
|
|
@@ -137,6 +143,7 @@ export declare class EachSocketConnectionHandler extends BaseSFUWebsocket {
|
|
|
137
143
|
private pingPongTimeout;
|
|
138
144
|
private destoryCallback?;
|
|
139
145
|
private connectionProtocol;
|
|
146
|
+
private webrtchHandler;
|
|
140
147
|
constructor(socket: WebSocket.WebSocket, isReconnectionFromUrl: boolean);
|
|
141
148
|
onDestoryCallback(callBack: (socketHandler: EachSocketConnectionHandler) => void): void;
|
|
142
149
|
init(): Promise<void>;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EachSocketConnectionHandler = exports.LocalMessageType = exports.MultiSystemEvents = exports.SFUMessageType = exports.WebSocketBasicEvents = void 0;
|
|
6
|
+
exports.EachSocketConnectionHandler = exports.LocalMessageType = exports.MultiSystemEvents = exports.WebrtcMessageType = exports.SFUMessageType = exports.WebSocketBasicEvents = void 0;
|
|
7
7
|
const RedisHandler_1 = require("../lib/redis/RedisHandler");
|
|
8
8
|
const Participant_1 = require("../models/Participant");
|
|
9
9
|
const uuid_1 = require("uuid");
|
|
@@ -16,6 +16,7 @@ const WebSocketServerStartRequest_1 = require("../models/WebSocketServerStartReq
|
|
|
16
16
|
const Utility_1 = require("../utility/Utility");
|
|
17
17
|
const Logs_1 = require("../models/Logs");
|
|
18
18
|
const Constant_1 = __importDefault(require("../utility/Constant"));
|
|
19
|
+
const WebrtcHandler_1 = require("../webrtc/WebrtcHandler");
|
|
19
20
|
var WebSocketBasicEvents;
|
|
20
21
|
(function (WebSocketBasicEvents) {
|
|
21
22
|
WebSocketBasicEvents["Config"] = "config";
|
|
@@ -93,6 +94,13 @@ var SFUMessageType;
|
|
|
93
94
|
// }
|
|
94
95
|
SFUMessageType["OnProducerNotFound"] = "OnProducerNotFound";
|
|
95
96
|
})(SFUMessageType || (exports.SFUMessageType = SFUMessageType = {}));
|
|
97
|
+
var WebrtcMessageType;
|
|
98
|
+
(function (WebrtcMessageType) {
|
|
99
|
+
WebrtcMessageType["WebrtcMessage"] = "WebrtcMessage";
|
|
100
|
+
WebrtcMessageType["SendOffer"] = "SendOffer";
|
|
101
|
+
WebrtcMessageType["IceCandidate"] = "IceCandidate";
|
|
102
|
+
WebrtcMessageType["SendAnswer"] = "SendAnswer";
|
|
103
|
+
})(WebrtcMessageType || (exports.WebrtcMessageType = WebrtcMessageType = {}));
|
|
96
104
|
var MultiSystemEvents;
|
|
97
105
|
(function (MultiSystemEvents) {
|
|
98
106
|
MultiSystemEvents["OnNewServerJoinedForRoom"] = "OnNewServerJoinedForRoom";
|
|
@@ -125,6 +133,7 @@ class EachSocketConnectionHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
|
|
|
125
133
|
pingPongTimeout = undefined;
|
|
126
134
|
destoryCallback;
|
|
127
135
|
connectionProtocol = ServerHandler_1.ServerHandler.getInstance().serverStartRequest.connectionProtocol;
|
|
136
|
+
webrtchHandler = new WebrtcHandler_1.WebrtcHandler();
|
|
128
137
|
constructor(socket, isReconnectionFromUrl) {
|
|
129
138
|
super();
|
|
130
139
|
this.socket = socket;
|
|
@@ -241,6 +250,9 @@ class EachSocketConnectionHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
|
|
|
241
250
|
roomSFUHandler.onNewMessage(paylod.data, this.selfParticipant);
|
|
242
251
|
}
|
|
243
252
|
}
|
|
253
|
+
else if (paylod.type === WebrtcMessageType.WebrtcMessage) {
|
|
254
|
+
this.webrtchHandler.onNewMessage(paylod.data, this.selfParticipant);
|
|
255
|
+
}
|
|
244
256
|
if (paylod.type !== WebSocketBasicEvents.Pong && paylod.type !== SFUMessageType.SFUMessage) {
|
|
245
257
|
Utility_1.Utility.checkAndSendLogs({ logLevel: WebSocketServerStartRequest_1.LogLevel.Info, roomId: this.selfParticipant?.roomId, payload: paylod, logType: Logs_1.LogType.LogTypeWSS });
|
|
246
258
|
}
|