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.
@@ -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
- if (this.audioObserver) {
356
- this.audioObserver?.addProducer({ producerId: audioProducer.id });
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
- if (this.audioLevelObserver) {
359
- this.audioLevelObserver?.addProducer({ producerId: audioProducer.id });
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
- await pipeTransportAndPort.transport?.connect({ ip: message.data.ip, port: message.data.port });
58
- 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 }));
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
- await this.pipeTransports[ip].transport.connect({ ip: ip, port: message.data.port });
67
- 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() }));
68
- this.roomHandlerDataSource.getAllProducerForRoom().forEach(async (eachRoomProducer) => {
69
- await this.consumeProductAndInfrom(this.pipeTransports[ip].transport, ip, eachRoomProducer);
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
- const producer = await this.pipeTransports[ip].transport.produce({ rtpParameters: message.data.rtpParameters, kind: message.data.kind, appData: message.data.appData });
86
- producer.appData.consumerId = message.data.consumerId;
87
- this.onNewRemoteProducer(producer);
88
- ServerHandler_1.ServerHandler.getInstance().serverStartRequest && ServerHandler_1.ServerHandler.getInstance().serverStartRequest.logLevel !== WebSocketServerStartRequest_1.LogLevel.None && console.log("MultiSystemEvents.OnConsumerData", producer);
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
- await this.roomHandlerDataSource.pipeToRoute(producer);
175
- this.remoteProducers.push({ producer: producer, participant: remoteParticipant });
176
- this.roomHandlerDataSource.onNewProducer(producer, remoteParticipant);
177
- 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 } })));
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
- ServerHandler_1.ServerHandler.getInstance().serverStartRequest && ServerHandler_1.ServerHandler.getInstance().serverStartRequest.logLevel !== WebSocketServerStartRequest_1.LogLevel.None && console.log("onTransportProduceSyncRequest");
252
- if (this.roomHandlerDataSource) {
253
- const producer = await this.webrtcSendTransport?.produce(payload.message);
254
- if (producer) {
255
- this.addObserverForProducer(producer);
256
- await this.onNewProducer(producer);
257
- if (producer.kind === 'audio') {
258
- this.roomHandlerDataSource.addAudioObserverForProducer(producer);
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vani-meeting-server",
3
- "version": "2.9.4",
3
+ "version": "2.9.5beta2",
4
4
  "description": "Vani Meeting Server SDK",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",