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.
- package/lib/models/WebSocketServerStartRequest.d.ts +13 -1
- package/lib/models/WebSocketServerStartRequest.js +16 -2
- package/lib/sfu/SFUEachRoomHandler.d.ts +5 -1
- package/lib/sfu/SFUEachRoomHandler.js +9 -1
- package/lib/sfu/SFUEachRoomUserHandler.js +2 -2
- package/lib/sfu/SFUHandler.d.ts +2 -1
- package/lib/sfu/SFUHandler.js +2 -2
- package/lib/utility/Constant.d.ts +2 -1
- package/lib/utility/Constant.js +4 -4
- package/lib/utility/EventEmitterHandler.js +1 -0
- package/lib/websocket/EachSocketConnectionHandler.d.ts +1 -0
- package/lib/websocket/EachSocketConnectionHandler.js +6 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
package/lib/sfu/SFUHandler.d.ts
CHANGED
|
@@ -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>;
|
package/lib/sfu/SFUHandler.js
CHANGED
|
@@ -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;
|
package/lib/utility/Constant.js
CHANGED
|
@@ -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
|
|
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:
|
|
62
|
-
preferTcp:
|
|
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
|
// {
|