vani-meeting-server 1.4.8 → 1.4.9

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,3 +1,14 @@
1
+ export declare enum ConnectionProtocol {
2
+ TCP = "TCP",
3
+ UDP = "UDP"
4
+ }
5
+ export declare enum LogLevel {
6
+ None = 4,
7
+ All = 3,
8
+ Info = 2,
9
+ Warn = 1,
10
+ Error = 0
11
+ }
1
12
  export declare class WebSocketServerStartRequest {
2
13
  port: number;
3
14
  redisUrl: string;
@@ -5,6 +16,7 @@ export declare class WebSocketServerStartRequest {
5
16
  redisRoomDestoryTimeOutInSec: number;
6
17
  rtcMinPort: number;
7
18
  rtcMaxPort: number;
8
- isTCPConnection: boolean;
19
+ connectionProtocol: ConnectionProtocol;
9
20
  wssServerCertificateOption?: any;
21
+ logLevel: LogLevel;
10
22
  }
@@ -1,6 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebSocketServerStartRequest = void 0;
3
+ exports.WebSocketServerStartRequest = exports.LogLevel = exports.ConnectionProtocol = void 0;
4
+ var ConnectionProtocol;
5
+ (function (ConnectionProtocol) {
6
+ ConnectionProtocol["TCP"] = "TCP";
7
+ ConnectionProtocol["UDP"] = "UDP";
8
+ })(ConnectionProtocol = exports.ConnectionProtocol || (exports.ConnectionProtocol = {}));
9
+ var LogLevel;
10
+ (function (LogLevel) {
11
+ LogLevel[LogLevel["None"] = 4] = "None";
12
+ LogLevel[LogLevel["All"] = 3] = "All";
13
+ LogLevel[LogLevel["Info"] = 2] = "Info";
14
+ LogLevel[LogLevel["Warn"] = 1] = "Warn";
15
+ LogLevel[LogLevel["Error"] = 0] = "Error";
16
+ })(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
4
17
  class WebSocketServerStartRequest {
5
18
  port = 4010;
6
19
  redisUrl = "redis://127.0.0.1:6379";
@@ -8,7 +21,8 @@ class WebSocketServerStartRequest {
8
21
  redisRoomDestoryTimeOutInSec = 1800;
9
22
  rtcMinPort = 40000;
10
23
  rtcMaxPort = 59999;
11
- isTCPConnection = false;
24
+ connectionProtocol = ConnectionProtocol.UDP;
12
25
  wssServerCertificateOption;
26
+ logLevel = LogLevel.None;
13
27
  }
14
28
  exports.WebSocketServerStartRequest = WebSocketServerStartRequest;
@@ -4,6 +4,7 @@ import { Router } from "mediasoup/node/lib/Router";
4
4
  import { Worker } from "mediasoup/node/lib/Worker";
5
5
  import { BaseSFUWebsocket } from "../base/BaseSFUWebsocket";
6
6
  import { Participant } from "../models/Participant";
7
+ import { ConnectionProtocol } from "../models/WebSocketServerStartRequest";
7
8
  import { PlainTransportPayload } from "../ServerHandler";
8
9
  import { SFUMessageType } from "../websocket/EachSocketConnectionHandler";
9
10
  import { SFUEachRoomUserHandler } from "./SFUEachRoomUserHandler";
@@ -30,6 +31,7 @@ export interface SFUEachRoomHandlerInterface {
30
31
  addAudioObserverForProducer(audioProducer: Producer): void;
31
32
  onNewProducer(producer: Producer, participant: Participant): void;
32
33
  pipeToRoute(producer: Producer): Promise<void>;
34
+ getConnectionProtocolType(): ConnectionProtocol;
33
35
  }
34
36
  export declare class SFUEachRoomHandler extends BaseSFUWebsocket implements SFUEachRoomHandlerInterface {
35
37
  private recvRouter;
@@ -42,7 +44,9 @@ export declare class SFUEachRoomHandler extends BaseSFUWebsocket implements SFUE
42
44
  private workers?;
43
45
  private sendWorkerIndex;
44
46
  private audioObserver?;
45
- constructor(roomId: string, workers: Worker[], sendWorkerIndex: number);
47
+ private connectionProtocol;
48
+ constructor(roomId: string, workers: Worker[], sendWorkerIndex: number, connectionProtocol?: ConnectionProtocol);
49
+ getConnectionProtocolType(): ConnectionProtocol;
46
50
  onNewMessage(payload: SFUMessageBody, participant: Participant): void;
47
51
  private getEachRoomUserFromParticipant;
48
52
  private onGetRTPCapabilities;
@@ -27,6 +27,7 @@ exports.SFUEachRoomHandler = void 0;
27
27
  const BaseSFUWebsocket_1 = require("../base/BaseSFUWebsocket");
28
28
  const RedisHandler_1 = require("../lib/redis/RedisHandler");
29
29
  const Event_1 = require("../models/Event");
30
+ const ServerHandler_1 = require("../ServerHandler");
30
31
  const Constant_1 = __importStar(require("../utility/Constant"));
31
32
  const EventEmitterHandler_1 = require("../utility/EventEmitterHandler");
32
33
  const EachSocketConnectionHandler_1 = require("../websocket/EachSocketConnectionHandler");
@@ -42,7 +43,8 @@ class SFUEachRoomHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
42
43
  workers;
43
44
  sendWorkerIndex = -1;
44
45
  audioObserver;
45
- constructor(roomId, workers, sendWorkerIndex) {
46
+ connectionProtocol = ServerHandler_1.ServerHandler.getInstance().serverStartRequest.connectionProtocol;
47
+ constructor(roomId, workers, sendWorkerIndex, connectionProtocol) {
46
48
  super();
47
49
  this.roomId = roomId;
48
50
  this.workers = workers;
@@ -50,6 +52,12 @@ class SFUEachRoomHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
50
52
  this.cleanUp = this.cleanUp.bind(this);
51
53
  this.startBroadcasting = this.startBroadcasting.bind(this);
52
54
  this.resumeAllBroadcastingConsumers = this.resumeAllBroadcastingConsumers.bind(this);
55
+ if (connectionProtocol) {
56
+ this.connectionProtocol = connectionProtocol;
57
+ }
58
+ }
59
+ getConnectionProtocolType() {
60
+ return this.connectionProtocol;
53
61
  }
54
62
  onNewMessage(payload, participant) {
55
63
  // console.log(payload)
@@ -266,7 +266,7 @@ class SFUEachRoomUserHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
266
266
  console.log("createWebrtcSendTransport");
267
267
  if (!this.webrtcSendTransport || this.webrtcSendTransport.closed) {
268
268
  console.log("createWebrtcSendTransport started");
269
- this.webrtcSendTransport = await this.sendRouter?.createWebRtcTransport(await Constant_1.default.webrtcTransportConfiguration());
269
+ this.webrtcSendTransport = await this.sendRouter?.createWebRtcTransport(await Constant_1.default.webrtcTransportConfiguration(this.roomHandlerDataSource.getConnectionProtocolType()));
270
270
  console.log("createWebrtcSendTransport created");
271
271
  if (this.webrtcSendTransport) {
272
272
  this.webrtcSendTransport.appData.type = 'send';
@@ -304,7 +304,7 @@ class SFUEachRoomUserHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
304
304
  return;
305
305
  }
306
306
  if (!this.webrtcRecieveTransport || this.webrtcRecieveTransport.closed) {
307
- this.webrtcRecieveTransport = await this.sendRouter?.createWebRtcTransport(await Constant_1.default.webrtcTransportConfiguration());
307
+ this.webrtcRecieveTransport = await this.sendRouter?.createWebRtcTransport(await Constant_1.default.webrtcTransportConfiguration(this.roomHandlerDataSource.getConnectionProtocolType()));
308
308
  if (this.webrtcRecieveTransport) {
309
309
  this.webrtcRecieveTransport.appData.type = 'consumer';
310
310
  this.webrtcRecieveTransport.appData.userId = participant.userId;
@@ -1,5 +1,6 @@
1
1
  import { SFUEachRoomHandler } from './SFUEachRoomHandler';
2
2
  import { PlainTransportPayload } from '../ServerHandler';
3
+ import { ConnectionProtocol } from '../models/WebSocketServerStartRequest';
3
4
  export declare class SFUHandler {
4
5
  static instance: SFUHandler;
5
6
  private workers;
@@ -7,7 +8,7 @@ export declare class SFUHandler {
7
8
  static getInstance(): SFUHandler;
8
9
  constructor();
9
10
  init(): Promise<void>;
10
- checkAndSetupRoom(roomId: string): Promise<void>;
11
+ checkAndSetupRoom(roomId: string, connectionProtocol: ConnectionProtocol): Promise<void>;
11
12
  checkIfCanCloseRoom(roomId: string): void;
12
13
  getRoomSFUHandler(roomId: string): SFUEachRoomHandler | undefined;
13
14
  startPlainTransportForBroadcasting(plainTransportPayload: PlainTransportPayload, forRoomid: string): Promise<void>;
@@ -44,10 +44,10 @@ class SFUHandler {
44
44
  async init() {
45
45
  await this.createWorkers();
46
46
  }
47
- async checkAndSetupRoom(roomId) {
47
+ async checkAndSetupRoom(roomId, connectionProtocol) {
48
48
  if (this.sfuRooms.has(roomId) === false) {
49
49
  console.log("On New Room");
50
- const sfuEachRoomHandler = new SFUEachRoomHandler_1.SFUEachRoomHandler(roomId, this.workers, (this.sfuRooms.size % this.workers.length));
50
+ const sfuEachRoomHandler = new SFUEachRoomHandler_1.SFUEachRoomHandler(roomId, this.workers, (this.sfuRooms.size % this.workers.length), connectionProtocol);
51
51
  this.sfuRooms.set(roomId, sfuEachRoomHandler);
52
52
  }
53
53
  }
@@ -1,6 +1,7 @@
1
1
  import { RtpCodecCapability } from "mediasoup/node/lib/RtpParameters";
2
+ import { ConnectionProtocol } from "../models/WebSocketServerStartRequest";
2
3
  export declare const mediaCodecs: RtpCodecCapability[];
3
- export declare function webrtcTransportConfiguration(): Promise<{
4
+ export declare function webrtcTransportConfiguration(perferProtocol: ConnectionProtocol): Promise<{
4
5
  listenIps: {
5
6
  ip: string;
6
7
  announcedIp: string | undefined;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.plainTransportConfiguration = exports.webrtcTransportConfiguration = exports.mediaCodecs = void 0;
4
- const ServerHandler_1 = require("../ServerHandler");
4
+ const WebSocketServerStartRequest_1 = require("../models/WebSocketServerStartRequest");
5
5
  const publicIp = require('public-ip');
6
6
  let publicIpAddress;
7
7
  (async () => {
@@ -50,7 +50,7 @@ exports.mediaCodecs = [
50
50
  }
51
51
  }
52
52
  ];
53
- async function webrtcTransportConfiguration() {
53
+ async function webrtcTransportConfiguration(perferProtocol) {
54
54
  if (!publicIpAddress) {
55
55
  publicIpAddress = await publicIp.v4();
56
56
  }
@@ -58,8 +58,8 @@ async function webrtcTransportConfiguration() {
58
58
  listenIps: [{ ip: '0.0.0.0', announcedIp: publicIpAddress }],
59
59
  enableUdp: true,
60
60
  enableTcp: true,
61
- preferUdp: !ServerHandler_1.ServerHandler.getInstance().serverStartRequest.isTCPConnection,
62
- preferTcp: ServerHandler_1.ServerHandler.getInstance().serverStartRequest.isTCPConnection,
61
+ preferUdp: perferProtocol === WebSocketServerStartRequest_1.ConnectionProtocol.UDP,
62
+ preferTcp: perferProtocol === WebSocketServerStartRequest_1.ConnectionProtocol.TCP,
63
63
  maxSctpMessageSize: 262144 * 10,
64
64
  sctpSendBufferSize: 262144 * 10,
65
65
  enableSctp: true,
@@ -6,6 +6,7 @@ class EventEmitterHandler {
6
6
  static instance = new EventEmitterHandler();
7
7
  vaniEventEmitter = new VaniEventListener_1.VaniEventListener();
8
8
  static getInstance() {
9
+ EventEmitterHandler.instance.vaniEventEmitter.setMaxListeners(100000);
9
10
  return EventEmitterHandler.instance;
10
11
  }
11
12
  }
@@ -95,6 +95,7 @@ export declare class EachSocketConnectionHandler extends BaseSFUWebsocket {
95
95
  private isReconnectionFromUrl;
96
96
  private numberOfPongWaiting;
97
97
  private destoryCallback?;
98
+ private connectionProtocol;
98
99
  constructor(socket: WebSocket.WebSocket, isReconnectionFromUrl: boolean);
99
100
  onDestoryCallback(callBack: (socketHandler: EachSocketConnectionHandler) => void): void;
100
101
  init(): Promise<void>;
@@ -8,6 +8,7 @@ const EventEmitterHandler_1 = require("../utility/EventEmitterHandler");
8
8
  const Event_1 = require("../models/Event");
9
9
  const SFUHandler_1 = require("../sfu/SFUHandler");
10
10
  const BaseSFUWebsocket_1 = require("../base/BaseSFUWebsocket");
11
+ const ServerHandler_1 = require("../ServerHandler");
11
12
  var WebSocketBasicEvents;
12
13
  (function (WebSocketBasicEvents) {
13
14
  WebSocketBasicEvents["Config"] = "config";
@@ -89,6 +90,7 @@ class EachSocketConnectionHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
89
90
  isReconnectionFromUrl = false;
90
91
  numberOfPongWaiting = 0;
91
92
  destoryCallback;
93
+ connectionProtocol = ServerHandler_1.ServerHandler.getInstance().serverStartRequest.connectionProtocol;
92
94
  constructor(socket, isReconnectionFromUrl) {
93
95
  super();
94
96
  this.socket = socket;
@@ -237,6 +239,9 @@ class EachSocketConnectionHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
237
239
  if (data.appId) {
238
240
  this.appId = data.appId;
239
241
  }
242
+ if (data.connectionProtocol) {
243
+ this.connectionProtocol = data.connectionProtocol;
244
+ }
240
245
  }
241
246
  async joinRoom(data) {
242
247
  const roomId = data.roomId;
@@ -255,7 +260,7 @@ class EachSocketConnectionHandler extends BaseSFUWebsocket_1.BaseSFUWebsocket {
255
260
  this.cleanUp();
256
261
  return;
257
262
  }
258
- await SFUHandler_1.SFUHandler.getInstance().checkAndSetupRoom(this.selfParticipant.roomId);
263
+ await SFUHandler_1.SFUHandler.getInstance().checkAndSetupRoom(this.selfParticipant.roomId, this.connectionProtocol);
259
264
  // if (shouldUseSfu) {
260
265
  // sfuRoom = sfuHandler.handleNewUserAdded(
261
266
  // {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vani-meeting-server",
3
- "version": "1.4.8",
3
+ "version": "1.4.9",
4
4
  "description": "Vani Meeting Server SDK",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",