vani-meeting-client-native 0.4.5 → 0.4.6-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.
@@ -573,6 +573,8 @@ var CommunicationHandler = /** @class */ (function () {
573
573
  CommunicationHandler.prototype.sendWebSocketMessage = function (type, data) {
574
574
  var _a;
575
575
  (_a = this.websocketCallHandler) === null || _a === void 0 ? void 0 : _a.sendSocketMessage(type, data);
576
+ // this.meetingStartRequest && this.meetingStartRequest.logLevel === LogLevel.Debug &&
577
+ // console.log("sendSocketMessage",type,data)
576
578
  };
577
579
  // public sendWebSocketMessageForWebrtc(type: WebrtcMessageType, data: any, to : string) {
578
580
  // this.websocketCallHandler?.sendSocketMessage(type, data)
@@ -1,7 +1,8 @@
1
1
  export declare enum MeetingType {
2
2
  CHAT = "chat",
3
3
  WEBRTC = "webrtc",
4
- SFU = "SFU"
4
+ SFU = "SFU",
5
+ SIP = "SIP"
5
6
  }
6
7
  export declare enum ConnectionProtocol {
7
8
  TCP = "TCP",
@@ -3,6 +3,7 @@ export var MeetingType;
3
3
  MeetingType["CHAT"] = "chat";
4
4
  MeetingType["WEBRTC"] = "webrtc";
5
5
  MeetingType["SFU"] = "SFU";
6
+ MeetingType["SIP"] = "SIP";
6
7
  })(MeetingType || (MeetingType = {}));
7
8
  export var ConnectionProtocol;
8
9
  (function (ConnectionProtocol) {
@@ -16,6 +16,7 @@ export declare class Participant {
16
16
  isRecordingUser: boolean;
17
17
  private peerConnections;
18
18
  getPeerConnections: () => Map<string, PeerConnection>;
19
+ isPeerConnectionsViaUserIdPresent: (userId: string) => PeerConnection;
19
20
  getPeerConnectionsViaUserId: (userId: string, meetingStartRequest: MeetingStartRequest) => PeerConnection;
20
21
  constructor(_userId: string, _roomId: string, _userData?: any, _isAdmin?: boolean);
21
22
  }
@@ -22,6 +22,9 @@ var Participant = /** @class */ (function () {
22
22
  }
23
23
  return _this.peerConnections;
24
24
  };
25
+ this.isPeerConnectionsViaUserIdPresent = function (userId) {
26
+ return _this.getPeerConnections().get(userId);
27
+ };
25
28
  this.getPeerConnectionsViaUserId = function (userId, meetingStartRequest) {
26
29
  if (!_this.getPeerConnections().has(userId)) {
27
30
  var peerConnection = new PeerConnection();
@@ -140,21 +140,37 @@ var WebrtcHandler = /** @class */ (function (_super) {
140
140
  switch (_c.label) {
141
141
  case 0:
142
142
  transceiver = peerConnection.rtcPeerConnection.getTransceivers().find(function (t) { var _a, _b; return ((_b = (_a = t === null || t === void 0 ? void 0 : t.sender) === null || _a === void 0 ? void 0 : _a.track) === null || _b === void 0 ? void 0 : _b.kind) === eachKind; });
143
- if (!!transceiver) return [3 /*break*/, 3];
143
+ if (!!transceiver) return [3 /*break*/, 1];
144
144
  this.printLogIfRequired("addTransceiverifRequired", eachKind);
145
145
  realTrack = (_a = this.communicationHandler) === null || _a === void 0 ? void 0 : _a.getAllSelfTracks().find(function (t) { var _a; return ((_a = t.track) === null || _a === void 0 ? void 0 : _a.kind) === eachKind; });
146
146
  newTransceiver = void 0;
147
- if (!(realTrack && realTrack.track)) return [3 /*break*/, 2];
148
- this.printLogIfRequired("addTransceiverifRequired track real", eachKind, realTrack.track);
149
- return [4 /*yield*/, peerConnection.rtcPeerConnection.addTrack(realTrack.track)
147
+ if (realTrack && realTrack.track) {
148
+ this.printLogIfRequired("addTransceiverifRequired track real", eachKind, realTrack.track);
149
+ // newTransceiver = await peerConnection.rtcPeerConnection.addTrack(realTrack.track)
150
+ if (realTrack.track.kind === 'audio') {
151
+ newTransceiver = peerConnection.rtcPeerConnection.addTransceiver(realTrack.track, {
152
+ direction: 'sendonly',
153
+ sendEncodings: [
154
+ {
155
+ maxBitrate: 32000,
156
+ priority: 'high',
157
+ networkPriority: 'high',
158
+ }
159
+ ]
160
+ });
161
+ }
162
+ else if (realTrack.track.kind === 'video') {
163
+ newTransceiver = peerConnection.rtcPeerConnection.addTransceiver(realTrack.track, {
164
+ direction: 'sendonly',
165
+ });
166
+ }
150
167
  // newTransceiver = await peerConnection.rtcPeerConnection.addTransceiver(realTrack.track, { direction: "sendrecv" })
151
- ];
152
- case 1:
153
- newTransceiver = _c.sent();
154
- // newTransceiver = await peerConnection.rtcPeerConnection.addTransceiver(realTrack.track, { direction: "sendrecv" })
155
- this.printLogIfRequired("addTransceiverifRequired track real end", eachKind, realTrack.track);
156
- return [3 /*break*/, 2];
157
- case 2:
168
+ this.printLogIfRequired("addTransceiverifRequired track real end", eachKind, realTrack.track);
169
+ }
170
+ else {
171
+ // this.printLogIfRequired("addTransceiverifRequired track fake",eachKind)
172
+ // newTransceiver = await peerConnection.rtcPeerConnection.addTransceiver(eachKind, { direction: "sendrecv" })
173
+ }
158
174
  if (eachKind === 'audio') {
159
175
  transceiver = peerConnection.rtcPeerConnection.getTransceivers().find(function (t) { var _a, _b; return ((_b = (_a = t === null || t === void 0 ? void 0 : t.sender) === null || _a === void 0 ? void 0 : _a.track) === null || _b === void 0 ? void 0 : _b.kind) === eachKind; });
160
176
  if (transceiver) {
@@ -162,21 +178,21 @@ var WebrtcHandler = /** @class */ (function (_super) {
162
178
  }
163
179
  // this.setOpusParams(newTransceiver);
164
180
  }
165
- return [3 /*break*/, 5];
166
- case 3:
167
- if (!shouldReplaceIfExist) return [3 /*break*/, 5];
181
+ return [3 /*break*/, 3];
182
+ case 1:
183
+ if (!shouldReplaceIfExist) return [3 /*break*/, 3];
168
184
  realTrack = (_b = this.communicationHandler) === null || _b === void 0 ? void 0 : _b.getAllSelfTracks().find(function (t) { var _a; return ((_a = t.track) === null || _a === void 0 ? void 0 : _a.kind) === eachKind; });
169
- if (!(realTrack && realTrack.track)) return [3 /*break*/, 5];
185
+ if (!(realTrack && realTrack.track)) return [3 /*break*/, 3];
170
186
  this.printLogIfRequired("transceiver.sender.", transceiver.sender, eachKind);
171
187
  return [4 /*yield*/, transceiver.sender.replaceTrack(realTrack.track)];
172
- case 4:
188
+ case 2:
173
189
  _c.sent();
174
190
  if (eachKind === 'audio') {
175
191
  this.applyAudioPriority(transceiver);
176
192
  // this.setOpusParams(newTransceiver);
177
193
  }
178
- _c.label = 5;
179
- case 5: return [2 /*return*/];
194
+ _c.label = 3;
195
+ case 3: return [2 /*return*/];
180
196
  }
181
197
  });
182
198
  });
@@ -245,10 +261,19 @@ var WebrtcHandler = /** @class */ (function (_super) {
245
261
  _this.loopSendOffer = function (peerConnectionObject, participant, mungedOffer, count) {
246
262
  if (count === void 0) { count = 0; }
247
263
  return __awaiter(_this, void 0, void 0, function () {
248
- var messageJson;
264
+ var selfParticpant, messageJson;
249
265
  var _this = this;
250
- return __generator(this, function (_a) {
251
- this.printLogIfRequired("Send Offer", mungedOffer);
266
+ var _a;
267
+ return __generator(this, function (_b) {
268
+ selfParticpant = (_a = this.communicationHandler) === null || _a === void 0 ? void 0 : _a.getSelfParticipant();
269
+ if (!selfParticpant) {
270
+ return [2 /*return*/];
271
+ }
272
+ if (!selfParticpant.isPeerConnectionsViaUserIdPresent(participant.userId)) {
273
+ this.printLogIfRequired("loopSendOffer", "Not found", selfParticpant, participant);
274
+ return [2 /*return*/];
275
+ }
276
+ this.printLogIfRequired("Send Offer", mungedOffer, participant);
252
277
  messageJson = { to: participant.userId, type: WebrtcMessageType.SendOffer, data: mungedOffer };
253
278
  this.sendWebrtcMessage(messageJson);
254
279
  if (peerConnectionObject.remoteAnswer || count > 20) {
@@ -346,15 +371,18 @@ var WebrtcHandler = /** @class */ (function (_super) {
346
371
  peerConnectionObject.remoteAnswer = data.sdp;
347
372
  }
348
373
  peerConnection = peerConnectionObject.rtcPeerConnection ? peerConnectionObject.rtcPeerConnection : this.dynamicLibHelper.getRTCPeerConnection(this.meetingStartRequest);
349
- if (!peerConnection) return [3 /*break*/, 2];
374
+ if (!peerConnection) return [3 /*break*/, 3];
375
+ if (!(peerConnection.signalingState === 'have-local-offer')) return [3 /*break*/, 2];
350
376
  return [4 /*yield*/, peerConnection.setRemoteDescription({ type: 'answer', sdp: peerConnectionObject.remoteAnswer })];
351
377
  case 1:
352
378
  _b.sent();
379
+ _b.label = 2;
380
+ case 2:
353
381
  peerConnectionObject.isRtcRestartIceInProgess = false;
354
382
  this.printLogIfRequired("REMOTE SDP", (_a = peerConnection.remoteDescription) === null || _a === void 0 ? void 0 : _a.sdp);
355
383
  this.printLogIfRequired("On New Answer setRemoteDescription", { type: 'answer', sdp: peerConnectionObject.remoteAnswer });
356
- _b.label = 2;
357
- case 2: return [2 /*return*/];
384
+ _b.label = 3;
385
+ case 3: return [2 /*return*/];
358
386
  }
359
387
  });
360
388
  }); };
@@ -789,23 +817,22 @@ var WebrtcHandler = /** @class */ (function (_super) {
789
817
  };
790
818
  _this.applyAudioPriority = function (transceiver) {
791
819
  var _a, _b;
792
- // return;
793
- // ✅ 1. Codec preference — Opus first
820
+ // Codec preference — Opus first
794
821
  var capabilities = (_a = RTCRtpSender.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(RTCRtpSender, 'audio');
795
- if (capabilities === null || capabilities === void 0 ? void 0 : capabilities.codecs) {
796
- var opus = capabilities.codecs.filter(function (c) {
797
- return c.mimeType.toLowerCase() === 'audio/opus';
798
- });
799
- var rest = capabilities.codecs.filter(function (c) {
800
- return c.mimeType.toLowerCase() !== 'audio/opus';
801
- });
802
- transceiver.setCodecPreferences(__spreadArray(__spreadArray([], __read(opus), false), __read(rest), false));
803
- }
804
- // 2. Encoding params bitrate + priority
822
+ if (!(capabilities === null || capabilities === void 0 ? void 0 : capabilities.codecs))
823
+ return;
824
+ var opus = capabilities.codecs.filter(function (c) {
825
+ return c.mimeType.toLowerCase() === 'audio/opus';
826
+ });
827
+ var rest = capabilities.codecs.filter(function (c) {
828
+ return c.mimeType.toLowerCase() !== 'audio/opus';
829
+ });
830
+ transceiver.setCodecPreferences(__spreadArray(__spreadArray([], __read(opus), false), __read(rest), false));
831
+ // maxBitrate only priority/networkPriority already set at addTransceiver
805
832
  var params = transceiver.sender.getParameters();
806
833
  if (!((_b = params.encodings) === null || _b === void 0 ? void 0 : _b.length))
807
- params.encodings = [{}];
808
- params.encodings[0] = __assign(__assign({}, params.encodings[0]), { maxBitrate: 32000, priority: 'high', networkPriority: 'high' });
834
+ return; // nothing to update, encoding slot not ready
835
+ params.encodings[0] = __assign(__assign({}, params.encodings[0]), { maxBitrate: 32000 });
809
836
  transceiver.sender.setParameters(params).catch(console.error);
810
837
  };
811
838
  _this.onNewTrack = function (track, receiver, transceiver, remoteParticipant) { return __awaiter(_this, void 0, void 0, function () {
@@ -373,6 +373,8 @@ var WebsocketHandler = /** @class */ (function (_super) {
373
373
  if (this.isWebScoketConnectedWithoutSetup()) {
374
374
  var paylod = { type: type, data: data };
375
375
  (_a = this.wss) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify(paylod));
376
+ this.meetingStartRequest && this.meetingStartRequest.logLevel === LogLevel.Debug &&
377
+ console.log("sendSocketMessage", type, JSON.stringify(paylod));
376
378
  // console.log("sendSocketMessage",type,data)
377
379
  }
378
380
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vani-meeting-client-native",
3
- "version": "0.4.5",
3
+ "version": "0.4.6beta2",
4
4
  "description": "Vani Meeting Clinet SDK",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",