@rtsee/signaling 0.0.13 → 0.0.17

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.
Files changed (43) hide show
  1. package/dist/{index.d.ts → signaling/src/index.d.ts} +0 -0
  2. package/dist/signaling/src/index.d.ts.map +1 -0
  3. package/dist/{index.js → signaling/src/index.js} +0 -0
  4. package/dist/signaling/src/index.js.map +1 -0
  5. package/dist/{interfaces → signaling/src/interfaces}/RTSeeSignalingOptions.d.ts +2 -0
  6. package/dist/signaling/src/interfaces/RTSeeSignalingOptions.d.ts.map +1 -0
  7. package/dist/{interfaces → signaling/src/interfaces}/RTSeeSignalingOptions.js +0 -0
  8. package/dist/signaling/src/interfaces/RTSeeSignalingOptions.js.map +1 -0
  9. package/dist/{interfaces → signaling/src/interfaces}/SignalingEvents.d.ts +10 -1
  10. package/dist/signaling/src/interfaces/SignalingEvents.d.ts.map +1 -0
  11. package/dist/{interfaces → signaling/src/interfaces}/SignalingEvents.js +0 -0
  12. package/dist/signaling/src/interfaces/SignalingEvents.js.map +1 -0
  13. package/dist/{interfaces → signaling/src/interfaces}/SocketMessages.d.ts +4 -1
  14. package/dist/signaling/src/interfaces/SocketMessages.d.ts.map +1 -0
  15. package/dist/{interfaces → signaling/src/interfaces}/SocketMessages.js +3 -0
  16. package/dist/signaling/src/interfaces/SocketMessages.js.map +1 -0
  17. package/dist/signaling/src/interfaces/SocketPeer.d.ts +6 -0
  18. package/dist/signaling/src/interfaces/SocketPeer.d.ts.map +1 -0
  19. package/dist/signaling/src/interfaces/SocketPeer.js +3 -0
  20. package/dist/signaling/src/interfaces/SocketPeer.js.map +1 -0
  21. package/dist/{interfaces → signaling/src/interfaces}/index.d.ts +0 -0
  22. package/dist/signaling/src/interfaces/index.d.ts.map +1 -0
  23. package/dist/{interfaces → signaling/src/interfaces}/index.js +0 -0
  24. package/dist/signaling/src/interfaces/index.js.map +1 -0
  25. package/dist/signaling/src/models/RTSeeSignaling.d.ts +39 -0
  26. package/dist/signaling/src/models/RTSeeSignaling.d.ts.map +1 -0
  27. package/dist/signaling/src/models/RTSeeSignaling.js +304 -0
  28. package/dist/signaling/src/models/RTSeeSignaling.js.map +1 -0
  29. package/package.json +8 -8
  30. package/dist/index.d.ts.map +0 -1
  31. package/dist/index.js.map +0 -1
  32. package/dist/interfaces/RTSeeSignalingOptions.d.ts.map +0 -1
  33. package/dist/interfaces/RTSeeSignalingOptions.js.map +0 -1
  34. package/dist/interfaces/SignalingEvents.d.ts.map +0 -1
  35. package/dist/interfaces/SignalingEvents.js.map +0 -1
  36. package/dist/interfaces/SocketMessages.d.ts.map +0 -1
  37. package/dist/interfaces/SocketMessages.js.map +0 -1
  38. package/dist/interfaces/index.d.ts.map +0 -1
  39. package/dist/interfaces/index.js.map +0 -1
  40. package/dist/models/RTSeeSignaling.d.ts +0 -22
  41. package/dist/models/RTSeeSignaling.d.ts.map +0 -1
  42. package/dist/models/RTSeeSignaling.js +0 -145
  43. package/dist/models/RTSeeSignaling.js.map +0 -1
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA6B;AAC7B,0DAAwC"}
@@ -1,9 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import http from "http";
3
3
  import SocketIO, { ServerOptions } from "socket.io";
4
+ import { IPeerInfo } from "@rtsee/core";
4
5
  export interface IRTSeeSignalingOptions {
5
6
  server?: http.Server;
6
7
  serverOptions?: Partial<ServerOptions>;
7
8
  io?: SocketIO.Server;
9
+ authenticate?: (token: string) => Promise<Partial<IPeerInfo>>;
8
10
  }
9
11
  //# sourceMappingURL=RTSeeSignalingOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTSeeSignalingOptions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/RTSeeSignalingOptions.ts"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;CAC/D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTSeeSignalingOptions.js","sourceRoot":"","sources":["../../../../src/interfaces/RTSeeSignalingOptions.ts"],"names":[],"mappings":""}
@@ -1,11 +1,12 @@
1
1
  import { SocketMessagesOutgoing } from "./SocketMessages";
2
+ import { IPeerInfo } from "@rtsee/core";
2
3
  export interface RTCIceCandidateInit {
3
4
  candidate?: string;
4
5
  sdpMLineIndex?: number | null;
5
6
  sdpMid?: string | null;
6
7
  usernameFragment?: string | null;
7
8
  }
8
- export interface ISignalingEventData {
9
+ export interface ISignalingEventData extends IPeerInfo {
9
10
  clientId: string;
10
11
  to?: string;
11
12
  from?: string;
@@ -13,12 +14,20 @@ export interface ISignalingEventData {
13
14
  }
14
15
  export interface ISignalingHandshakeEventData extends ISignalingEventData {
15
16
  sdp: string;
17
+ isScreenShare?: boolean;
16
18
  }
17
19
  export interface ISignalingIceEventData extends ISignalingEventData, RTCIceCandidateInit {
20
+ isScreenShare?: boolean;
21
+ }
22
+ export interface ISignalingDeviceStateEventData extends ISignalingEventData {
23
+ deviceOn: boolean;
18
24
  }
19
25
  export interface ISignalingIceEvent extends ISignalingEvent {
20
26
  data: ISignalingIceEventData;
21
27
  }
28
+ export interface ISignalingDeviceStateEvent extends ISignalingEvent {
29
+ data: ISignalingDeviceStateEventData;
30
+ }
22
31
  export interface ISignalingEvent {
23
32
  name: SocketMessagesOutgoing;
24
33
  data?: ISignalingEventData;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalingEvents.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/SignalingEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBACf,SAAQ,mBAAmB,EACzB,mBAAmB;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,IAAI,EAAE,sBAAsB,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,IAAI,EAAE,8BAA8B,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,CAAC,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,IAAI,EAAE,4BAA4B,CAAC;CACpC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalingEvents.js","sourceRoot":"","sources":["../../../../src/interfaces/SignalingEvents.ts"],"names":[],"mappings":""}
@@ -9,7 +9,10 @@ export declare enum SocketMessagesOutgoing {
9
9
  ROOM_JOINED = "room_joined",
10
10
  OFFER = "offer",
11
11
  ANSWER = "answer",
12
- ICE_CANDIDATE = "ice_candidate"
12
+ ICE_CANDIDATE = "ice_candidate",
13
+ MICROPHONE_TOGGLED = "microphone_toggled",
14
+ CAMERA_TOGGLED = "enable_camera",
15
+ SHARE_SCREEN_STOP = "share_screen_stop"
13
16
  }
14
17
  export interface ISocketMessageIncoming {
15
18
  to: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketMessages.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/SocketMessages.ts"],"names":[],"mappings":"AAAA,oBAAY,sBAAsB;IAChC,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,aAAa,kBAAkB;CAChC;AAED,oBAAY,sBAAsB;IAChC,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,cAAc,kBAAkB;IAChC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -15,5 +15,8 @@ var SocketMessagesOutgoing;
15
15
  SocketMessagesOutgoing["OFFER"] = "offer";
16
16
  SocketMessagesOutgoing["ANSWER"] = "answer";
17
17
  SocketMessagesOutgoing["ICE_CANDIDATE"] = "ice_candidate";
18
+ SocketMessagesOutgoing["MICROPHONE_TOGGLED"] = "microphone_toggled";
19
+ SocketMessagesOutgoing["CAMERA_TOGGLED"] = "enable_camera";
20
+ SocketMessagesOutgoing["SHARE_SCREEN_STOP"] = "share_screen_stop";
18
21
  })(SocketMessagesOutgoing = exports.SocketMessagesOutgoing || (exports.SocketMessagesOutgoing = {}));
19
22
  //# sourceMappingURL=SocketMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketMessages.js","sourceRoot":"","sources":["../../../../src/interfaces/SocketMessages.ts"],"names":[],"mappings":";;;AAAA,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,iDAAuB,CAAA;IACvB,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,yDAA+B,CAAA;AACjC,CAAC,EALW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAKjC;AAED,IAAY,sBASX;AATD,WAAY,sBAAsB;IAChC,uDAA6B,CAAA;IAC7B,qDAA2B,CAAA;IAC3B,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,yDAA+B,CAAA;IAC/B,mEAAyC,CAAA;IACzC,0DAAgC,CAAA;IAChC,iEAAuC,CAAA;AACzC,CAAC,EATW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QASjC"}
@@ -0,0 +1,6 @@
1
+ import { Socket } from "socket.io";
2
+ import { IPeer } from "@rtsee/core";
3
+ export interface ISocketPeer extends Socket {
4
+ rtseePeer?: IPeer;
5
+ }
6
+ //# sourceMappingURL=SocketPeer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketPeer.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/SocketPeer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=SocketPeer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketPeer.js","sourceRoot":"","sources":["../../../../src/interfaces/SocketPeer.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAwC;AACxC,oDAAkC;AAClC,mDAAiC"}
@@ -0,0 +1,39 @@
1
+ /// <reference types="node" />
2
+ import http from "http";
3
+ import SocketIO, { ServerOptions } from "socket.io";
4
+ import { ISignalingEvent, ISignalingHandshakeEventData, ISignalingIceEventData } from "../interfaces/SignalingEvents";
5
+ import { IRTSeeSignalingOptions } from "@rtsee/signaling";
6
+ import { IDeviceToggleData, IPeerInfo } from "@rtsee/core";
7
+ import { ISocketPeer } from "../interfaces/SocketPeer";
8
+ export declare class RTSeeSignaling {
9
+ server?: http.Server;
10
+ io?: SocketIO.Server;
11
+ serverOptions?: Partial<ServerOptions>;
12
+ authenticate?: (token: string) => Promise<Partial<IPeerInfo>>;
13
+ constructor(options: IRTSeeSignalingOptions);
14
+ initFromSocketIoServer(options: IRTSeeSignalingOptions): void;
15
+ initFromApplicationServer(options: IRTSeeSignalingOptions): void;
16
+ private onConnected;
17
+ handleJoinCallMessage(socket: ISocketPeer, options: {
18
+ clientId: string;
19
+ roomId: string;
20
+ }): void;
21
+ handleOfferMessage(socket: ISocketPeer, options: ISignalingHandshakeEventData): void;
22
+ handleAnswerMessage(socket: ISocketPeer, options: ISignalingHandshakeEventData): void;
23
+ handleIceMessage(socket: ISocketPeer, options: ISignalingIceEventData): void;
24
+ handleCameraToggleMessage(socket: ISocketPeer, options: IDeviceToggleData): void;
25
+ handleMicrophoneToggleMessage(socket: ISocketPeer, options: IDeviceToggleData): void;
26
+ handleScreenShareStopMessage(socket: ISocketPeer, options: {
27
+ clientId: string;
28
+ roomId: string;
29
+ }): void;
30
+ applyAuthenticateCallback(socket: ISocketPeer): Promise<boolean>;
31
+ initSocketIo(): void;
32
+ private getRoomClientsCount;
33
+ static getCallRoomName(id: string): string;
34
+ static getClientRoomName(clientId: string, roomId: string): string;
35
+ private sendToRoom;
36
+ static broadcast(socket: ISocketPeer, event: ISignalingEvent, room: string): void;
37
+ static stringifyEventData(event: ISignalingEvent): string;
38
+ }
39
+ //# sourceMappingURL=RTSeeSignaling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTSeeSignaling.d.ts","sourceRoot":"","sources":["../../../../src/models/RTSeeSignaling.ts"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,EAAE,EAAU,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAEL,eAAe,EAEf,4BAA4B,EAE5B,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,qBAAa,cAAc;IACzB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBAElD,OAAO,EAAE,sBAAsB;IAY3C,sBAAsB,CAAC,OAAO,EAAE,sBAAsB;IAQtD,yBAAyB,CAAC,OAAO,EAAE,sBAAsB;YAU3C,WAAW;IA2CzB,qBAAqB,CACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IA4B/C,kBAAkB,CAChB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,4BAA4B;IAsBvC,mBAAmB,CACjB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,4BAA4B;IAkBvC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB;IAkBrE,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB;IAYzE,6BAA6B,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,iBAAiB;IAa5B,4BAA4B,CAC1B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAiBzC,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBtE,YAAY;IAIZ,OAAO,CAAC,mBAAmB;IAW3B,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM;IAIjC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIzD,OAAO,CAAC,UAAU;IAYlB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM;IAY1E,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe;CAUjD"}
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.RTSeeSignaling = void 0;
51
+ var socket_io_1 = require("socket.io");
52
+ var SocketMessages_1 = require("../interfaces/SocketMessages");
53
+ var core_1 = require("@rtsee/core");
54
+ var callRoomPrefix = "callRoom_";
55
+ var clientRoomPrefix = "_clientRoom_";
56
+ var RTSeeSignaling = /** @class */ (function () {
57
+ function RTSeeSignaling(options) {
58
+ if (options.io) {
59
+ this.initFromSocketIoServer(options);
60
+ }
61
+ if (options.server) {
62
+ this.initFromApplicationServer(options);
63
+ }
64
+ if (options.authenticate) {
65
+ this.authenticate = options.authenticate;
66
+ }
67
+ }
68
+ RTSeeSignaling.prototype.initFromSocketIoServer = function (options) {
69
+ if (!options.io) {
70
+ throw new Error("io_not_provided");
71
+ }
72
+ this.io = options.io;
73
+ this.io.use(this.onConnected.bind(this));
74
+ };
75
+ RTSeeSignaling.prototype.initFromApplicationServer = function (options) {
76
+ this.server = options.server;
77
+ this.serverOptions = options.serverOptions;
78
+ this.initSocketIo();
79
+ if (!this.io) {
80
+ throw new Error("Failed to init Socket.IO server");
81
+ }
82
+ this.initFromSocketIoServer({ io: this.io });
83
+ };
84
+ RTSeeSignaling.prototype.onConnected = function (socket, next) {
85
+ return __awaiter(this, void 0, void 0, function () {
86
+ var result;
87
+ var _this = this;
88
+ return __generator(this, function (_a) {
89
+ switch (_a.label) {
90
+ case 0:
91
+ if (!this.authenticate) return [3 /*break*/, 2];
92
+ return [4 /*yield*/, this.applyAuthenticateCallback(socket)];
93
+ case 1:
94
+ result = _a.sent();
95
+ if (!result) {
96
+ return [2 /*return*/, next(new Error("Authentication error"))];
97
+ }
98
+ _a.label = 2;
99
+ case 2:
100
+ socket.on(SocketMessages_1.SocketMessagesIncoming["JOIN_CALL"], function (options) {
101
+ return _this.handleJoinCallMessage(socket, options);
102
+ });
103
+ socket.on(SocketMessages_1.SocketMessagesIncoming["OFFER"], function (message) {
104
+ return _this.handleOfferMessage(socket, message);
105
+ });
106
+ socket.on(SocketMessages_1.SocketMessagesIncoming["ANSWER"], function (message) {
107
+ return _this.handleAnswerMessage(socket, message);
108
+ });
109
+ socket.on(SocketMessages_1.SocketMessagesIncoming["ICE_CANDIDATE"], function (message) {
110
+ return _this.handleIceMessage(socket, message);
111
+ });
112
+ socket.on(core_1.RTSeeEvents["CAMERA_TOGGLED"], function (message) {
113
+ return _this.handleCameraToggleMessage(socket, message);
114
+ });
115
+ socket.on(core_1.RTSeeEvents["MICROPHONE_TOGGLED"], function (message) {
116
+ return _this.handleMicrophoneToggleMessage(socket, message);
117
+ });
118
+ socket.on(core_1.RTSeeEvents["SHARE_SCREEN_STOP"], function (message) {
119
+ return _this.handleScreenShareStopMessage(socket, message);
120
+ });
121
+ next();
122
+ return [2 /*return*/];
123
+ }
124
+ });
125
+ });
126
+ };
127
+ RTSeeSignaling.prototype.handleJoinCallMessage = function (socket, options) {
128
+ var callRoomName = RTSeeSignaling.getCallRoomName(options.roomId);
129
+ var clientRoomName = RTSeeSignaling.getClientRoomName(options.clientId, options.roomId);
130
+ var clientsCount = this.getRoomClientsCount(callRoomName);
131
+ void socket.join(callRoomName);
132
+ void socket.join(clientRoomName);
133
+ var event = {
134
+ name: clientsCount < 1
135
+ ? SocketMessages_1.SocketMessagesOutgoing["ROOM_CREATED"]
136
+ : SocketMessages_1.SocketMessagesOutgoing["ROOM_JOINED"],
137
+ data: {
138
+ clientId: options.clientId,
139
+ },
140
+ };
141
+ if (socket.rtseePeer) {
142
+ event.data = __assign(__assign({}, socket.rtseePeer), event.data);
143
+ }
144
+ RTSeeSignaling.broadcast(socket, event, callRoomName);
145
+ };
146
+ RTSeeSignaling.prototype.handleOfferMessage = function (socket, options) {
147
+ var clientRoomName = RTSeeSignaling.getClientRoomName(options.to, options.roomId);
148
+ var eventToSend = {
149
+ name: SocketMessages_1.SocketMessagesOutgoing["OFFER"],
150
+ data: {
151
+ clientId: options.from,
152
+ sdp: options.sdp,
153
+ isScreenShare: options.isScreenShare,
154
+ },
155
+ };
156
+ if (socket.rtseePeer) {
157
+ eventToSend.data = __assign(__assign({}, socket.rtseePeer), eventToSend.data);
158
+ }
159
+ this.sendToRoom(clientRoomName, eventToSend);
160
+ };
161
+ RTSeeSignaling.prototype.handleAnswerMessage = function (socket, options) {
162
+ var clientRoomName = RTSeeSignaling.getClientRoomName(options.to, options.roomId);
163
+ var eventToSend = {
164
+ name: SocketMessages_1.SocketMessagesOutgoing["ANSWER"],
165
+ data: {
166
+ clientId: options.from,
167
+ sdp: options.sdp,
168
+ isScreenShare: options.isScreenShare,
169
+ },
170
+ };
171
+ this.sendToRoom(clientRoomName, eventToSend);
172
+ };
173
+ RTSeeSignaling.prototype.handleIceMessage = function (socket, options) {
174
+ var clientRoomName = RTSeeSignaling.getClientRoomName(options.to, options.roomId);
175
+ var eventToSend = {
176
+ name: SocketMessages_1.SocketMessagesOutgoing["ICE_CANDIDATE"],
177
+ data: {
178
+ sdpMLineIndex: options.sdpMLineIndex,
179
+ candidate: options.candidate,
180
+ clientId: options.from,
181
+ isScreenShare: options.isScreenShare,
182
+ },
183
+ };
184
+ this.sendToRoom(clientRoomName, eventToSend);
185
+ };
186
+ RTSeeSignaling.prototype.handleCameraToggleMessage = function (socket, options) {
187
+ var callRoomName = RTSeeSignaling.getCallRoomName(options.roomId);
188
+ var event = {
189
+ name: SocketMessages_1.SocketMessagesOutgoing["CAMERA_TOGGLED"],
190
+ data: {
191
+ deviceOn: options.deviceOn,
192
+ clientId: options.from,
193
+ },
194
+ };
195
+ RTSeeSignaling.broadcast(socket, event, callRoomName);
196
+ };
197
+ RTSeeSignaling.prototype.handleMicrophoneToggleMessage = function (socket, options) {
198
+ var callRoomName = RTSeeSignaling.getCallRoomName(options.roomId);
199
+ var event = {
200
+ name: SocketMessages_1.SocketMessagesOutgoing["MICROPHONE_TOGGLED"],
201
+ data: {
202
+ deviceOn: options.deviceOn,
203
+ clientId: options.from,
204
+ },
205
+ };
206
+ RTSeeSignaling.broadcast(socket, event, callRoomName);
207
+ };
208
+ RTSeeSignaling.prototype.handleScreenShareStopMessage = function (socket, options) {
209
+ var callRoomName = RTSeeSignaling.getCallRoomName(options.roomId);
210
+ var event = {
211
+ name: SocketMessages_1.SocketMessagesOutgoing["SHARE_SCREEN_STOP"],
212
+ data: {
213
+ clientId: options.clientId,
214
+ },
215
+ };
216
+ if (socket.rtseePeer) {
217
+ event.data = __assign(__assign({}, socket.rtseePeer), event.data);
218
+ }
219
+ RTSeeSignaling.broadcast(socket, event, callRoomName);
220
+ };
221
+ RTSeeSignaling.prototype.applyAuthenticateCallback = function (socket) {
222
+ return __awaiter(this, void 0, void 0, function () {
223
+ var token, peerInfo;
224
+ return __generator(this, function (_a) {
225
+ switch (_a.label) {
226
+ case 0:
227
+ if (!socket.handshake.query || !socket.handshake.query.token) {
228
+ return [2 /*return*/, false];
229
+ }
230
+ token = socket.handshake.query.token;
231
+ if (!token || typeof token !== "string") {
232
+ return [2 /*return*/, false];
233
+ }
234
+ return [4 /*yield*/, this.authenticate(token)];
235
+ case 1:
236
+ peerInfo = _a.sent();
237
+ if (!peerInfo) {
238
+ return [2 /*return*/, false];
239
+ }
240
+ socket.rtseePeer = __assign(__assign({}, peerInfo), { clientId: token });
241
+ return [2 /*return*/, true];
242
+ }
243
+ });
244
+ });
245
+ };
246
+ RTSeeSignaling.prototype.initSocketIo = function () {
247
+ this.io = new socket_io_1.Server(this.server, this.serverOptions);
248
+ };
249
+ RTSeeSignaling.prototype.getRoomClientsCount = function (roomName) {
250
+ if (!this.io) {
251
+ return 0;
252
+ }
253
+ var room = this.io.sockets.adapter.rooms.get(roomName);
254
+ if (!room) {
255
+ return 0;
256
+ }
257
+ return room.size || 0;
258
+ };
259
+ RTSeeSignaling.getCallRoomName = function (id) {
260
+ return callRoomPrefix + id;
261
+ };
262
+ RTSeeSignaling.getClientRoomName = function (clientId, roomId) {
263
+ return callRoomPrefix + roomId + clientRoomPrefix + clientId;
264
+ };
265
+ RTSeeSignaling.prototype.sendToRoom = function (roomId, event) {
266
+ var _a, _b;
267
+ if (event.data) {
268
+ var eventDataString = RTSeeSignaling.stringifyEventData(event);
269
+ if (!eventDataString) {
270
+ return;
271
+ }
272
+ (_a = this.io) === null || _a === void 0 ? void 0 : _a.to(roomId).emit(event.name, eventDataString);
273
+ }
274
+ else {
275
+ (_b = this.io) === null || _b === void 0 ? void 0 : _b.to(roomId).emit(event.name);
276
+ }
277
+ };
278
+ RTSeeSignaling.broadcast = function (socket, event, room) {
279
+ if (event.data) {
280
+ var eventDataString = RTSeeSignaling.stringifyEventData(event);
281
+ if (!eventDataString) {
282
+ return;
283
+ }
284
+ socket.broadcast.to(room).emit(event.name, eventDataString);
285
+ }
286
+ else {
287
+ socket.broadcast.to(room).emit(event.name);
288
+ }
289
+ };
290
+ RTSeeSignaling.stringifyEventData = function (event) {
291
+ if (event.data) {
292
+ try {
293
+ return JSON.stringify(event.data);
294
+ }
295
+ catch (e) {
296
+ console.log("Failed to stringify object: ", e);
297
+ return null;
298
+ }
299
+ }
300
+ };
301
+ return RTSeeSignaling;
302
+ }());
303
+ exports.RTSeeSignaling = RTSeeSignaling;
304
+ //# sourceMappingURL=RTSeeSignaling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTSeeSignaling.js","sourceRoot":"","sources":["../../../../src/models/RTSeeSignaling.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@rtsee/signaling",
3
- "version": "0.0.13",
3
+ "version": "0.0.17",
4
4
  "license": "ISC",
5
5
  "private": false,
6
- "main": "dist/index",
7
- "types": "dist/index",
6
+ "main": "dist/signaling/src/index",
7
+ "types": "dist/signaling/src/index",
8
8
  "files": [
9
- "dist"
9
+ "dist/signaling/src"
10
10
  ],
11
11
  "repository": {
12
12
  "type": "git",
@@ -27,9 +27,9 @@
27
27
  "@types/jest": "^26.0.24",
28
28
  "@types/node": "^16.3.1",
29
29
  "@types/webrtc": "0.0.29",
30
- "@typescript-eslint/eslint-plugin": "^2.8.0",
31
- "@typescript-eslint/parser": "^2.8.0",
32
- "eslint": "^6.7.2",
30
+ "@typescript-eslint/eslint-plugin": "^4.33.0",
31
+ "@typescript-eslint/parser": "^4.33.0",
32
+ "eslint": "^7.32.0",
33
33
  "eslint-config-prettier": "^8.3.0",
34
34
  "eslint-plugin-jest": "^23.1.1",
35
35
  "jest": "^27.0.6",
@@ -47,5 +47,5 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "897b73cf6324adc22a6b886af15805168ea9b4dd"
50
+ "gitHead": "70129003bb6f2d24a0a34aac1868e8c9f999ae31"
51
51
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA6B;AAC7B,0DAAwC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RTSeeSignalingOptions.d.ts","sourceRoot":"","sources":["../../src/interfaces/RTSeeSignalingOptions.ts"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;CACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RTSeeSignalingOptions.js","sourceRoot":"","sources":["../../src/interfaces/RTSeeSignalingOptions.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SignalingEvents.d.ts","sourceRoot":"","sources":["../../src/interfaces/SignalingEvents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBACf,SAAQ,mBAAmB,EACzB,mBAAmB;CAAG;AAE1B,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,IAAI,EAAE,sBAAsB,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,IAAI,CAAC,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,IAAI,EAAE,4BAA4B,CAAC;CACpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SignalingEvents.js","sourceRoot":"","sources":["../../src/interfaces/SignalingEvents.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SocketMessages.d.ts","sourceRoot":"","sources":["../../src/interfaces/SocketMessages.ts"],"names":[],"mappings":"AAAA,oBAAY,sBAAsB;IAChC,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,aAAa,kBAAkB;CAChC;AAED,oBAAY,sBAAsB;IAChC,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SocketMessages.js","sourceRoot":"","sources":["../../src/interfaces/SocketMessages.ts"],"names":[],"mappings":";;;AAAA,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,iDAAuB,CAAA;IACvB,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,yDAA+B,CAAA;AACjC,CAAC,EALW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAKjC;AAED,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,uDAA6B,CAAA;IAC7B,qDAA2B,CAAA;IAC3B,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,yDAA+B,CAAA;AACjC,CAAC,EANW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAMjC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0DAAwC;AACxC,oDAAkC;AAClC,mDAAiC"}
@@ -1,22 +0,0 @@
1
- /// <reference types="node" />
2
- import http from "http";
3
- import SocketIO, { ServerOptions, Socket } from "socket.io";
4
- import { ISignalingEvent } from "../interfaces/SignalingEvents";
5
- import { IRTSeeSignalingOptions } from "@rtsee/signaling";
6
- export declare class RTSeeSignaling {
7
- server?: http.Server;
8
- io?: SocketIO.Server;
9
- serverOptions?: Partial<ServerOptions>;
10
- constructor(options: IRTSeeSignalingOptions);
11
- initFromSocketIoServer(options: IRTSeeSignalingOptions): void;
12
- initFromApplicationServer(options: IRTSeeSignalingOptions): void;
13
- private onConnected;
14
- initSocketIo(): void;
15
- private getRoomClientsCount;
16
- static getCallRoomName(id: string): string;
17
- static getClientRoomName(clientId: string, roomId: string): string;
18
- private sendToRoom;
19
- static broadcast(socket: Socket, event: ISignalingEvent, room: string): void;
20
- static stringifyEventData(event: ISignalingEvent): string;
21
- }
22
- //# sourceMappingURL=RTSeeSignaling.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RTSeeSignaling.d.ts","sourceRoot":"","sources":["../../src/models/RTSeeSignaling.ts"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,EAAE,EAAU,aAAa,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EACL,eAAe,EAKhB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAK1D,qBAAa,cAAc;IACzB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;gBAE3B,OAAO,EAAE,sBAAsB;IAS3C,sBAAsB,CAAC,OAAO,EAAE,sBAAsB;IAQtD,yBAAyB,CAAC,OAAO,EAAE,sBAAsB;IAUzD,OAAO,CAAC,WAAW;IAoFnB,YAAY;IAIZ,OAAO,CAAC,mBAAmB;IAW3B,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM;IAIjC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIzD,OAAO,CAAC,UAAU;IAYlB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM;IAYrE,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe;CAUjD"}
@@ -1,145 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RTSeeSignaling = void 0;
4
- var socket_io_1 = require("socket.io");
5
- var SocketMessages_1 = require("../interfaces/SocketMessages");
6
- var callRoomPrefix = "callRoom_";
7
- var clientRoomPrefix = "_clientRoom_";
8
- var RTSeeSignaling = /** @class */ (function () {
9
- function RTSeeSignaling(options) {
10
- if (options.io) {
11
- this.initFromSocketIoServer(options);
12
- }
13
- if (options.server) {
14
- this.initFromApplicationServer(options);
15
- }
16
- }
17
- RTSeeSignaling.prototype.initFromSocketIoServer = function (options) {
18
- if (!options.io) {
19
- throw new Error("io_not_provided");
20
- }
21
- this.io = options.io;
22
- this.io.use(this.onConnected.bind(this));
23
- };
24
- RTSeeSignaling.prototype.initFromApplicationServer = function (options) {
25
- this.server = options.server;
26
- this.serverOptions = options.serverOptions;
27
- this.initSocketIo();
28
- if (!this.io) {
29
- throw new Error("Failed to init Socket.IO server");
30
- }
31
- this.initFromSocketIoServer({ io: this.io });
32
- };
33
- RTSeeSignaling.prototype.onConnected = function (socket, next) {
34
- var _this = this;
35
- socket.on(SocketMessages_1.SocketMessagesIncoming["JOIN_CALL"], function (options) {
36
- var callRoomName = RTSeeSignaling.getCallRoomName(options.roomId);
37
- var clientRoomName = RTSeeSignaling.getClientRoomName(options.clientId, options.roomId);
38
- var clientsCount = _this.getRoomClientsCount(callRoomName);
39
- void socket.join(callRoomName);
40
- void socket.join(clientRoomName);
41
- var event = {
42
- name: clientsCount < 1
43
- ? SocketMessages_1.SocketMessagesOutgoing["ROOM_CREATED"]
44
- : SocketMessages_1.SocketMessagesOutgoing["ROOM_JOINED"],
45
- data: {
46
- clientId: options.clientId,
47
- },
48
- };
49
- RTSeeSignaling.broadcast(socket, event, callRoomName);
50
- });
51
- socket.on(SocketMessages_1.SocketMessagesIncoming["OFFER"], function (event) {
52
- var clientRoomName = RTSeeSignaling.getClientRoomName(event.to, event.roomId);
53
- var eventToSend = {
54
- name: SocketMessages_1.SocketMessagesOutgoing["OFFER"],
55
- data: {
56
- clientId: event.from,
57
- sdp: event.sdp,
58
- },
59
- };
60
- _this.sendToRoom(clientRoomName, eventToSend);
61
- });
62
- socket.on(SocketMessages_1.SocketMessagesIncoming["ANSWER"], function (event) {
63
- var clientRoomName = RTSeeSignaling.getClientRoomName(event.to, event.roomId);
64
- var eventToSend = {
65
- name: SocketMessages_1.SocketMessagesOutgoing["ANSWER"],
66
- data: {
67
- clientId: event.from,
68
- sdp: event.sdp,
69
- },
70
- };
71
- _this.sendToRoom(clientRoomName, eventToSend);
72
- });
73
- socket.on(SocketMessages_1.SocketMessagesIncoming["ICE_CANDIDATE"], function (event) {
74
- var clientRoomName = RTSeeSignaling.getClientRoomName(event.to, event.roomId);
75
- var eventToSend = {
76
- name: SocketMessages_1.SocketMessagesOutgoing["ICE_CANDIDATE"],
77
- data: {
78
- sdpMLineIndex: event.sdpMLineIndex,
79
- candidate: event.candidate,
80
- clientId: event.from,
81
- },
82
- };
83
- _this.sendToRoom(clientRoomName, eventToSend);
84
- });
85
- next();
86
- };
87
- RTSeeSignaling.prototype.initSocketIo = function () {
88
- this.io = new socket_io_1.Server(this.server, this.serverOptions);
89
- };
90
- RTSeeSignaling.prototype.getRoomClientsCount = function (roomName) {
91
- if (!this.io) {
92
- return 0;
93
- }
94
- var room = this.io.sockets.adapter.rooms.get(roomName);
95
- if (!room) {
96
- return 0;
97
- }
98
- return room.size || 0;
99
- };
100
- RTSeeSignaling.getCallRoomName = function (id) {
101
- return callRoomPrefix + id;
102
- };
103
- RTSeeSignaling.getClientRoomName = function (clientId, roomId) {
104
- return callRoomPrefix + roomId + clientRoomPrefix + clientId;
105
- };
106
- RTSeeSignaling.prototype.sendToRoom = function (roomId, event) {
107
- var _a, _b;
108
- if (event.data) {
109
- var eventDataString = RTSeeSignaling.stringifyEventData(event);
110
- if (!eventDataString) {
111
- return;
112
- }
113
- (_a = this.io) === null || _a === void 0 ? void 0 : _a.to(roomId).emit(event.name, eventDataString);
114
- }
115
- else {
116
- (_b = this.io) === null || _b === void 0 ? void 0 : _b.to(roomId).emit(event.name);
117
- }
118
- };
119
- RTSeeSignaling.broadcast = function (socket, event, room) {
120
- if (event.data) {
121
- var eventDataString = RTSeeSignaling.stringifyEventData(event);
122
- if (!eventDataString) {
123
- return;
124
- }
125
- socket.broadcast.to(room).emit(event.name, eventDataString);
126
- }
127
- else {
128
- socket.broadcast.to(room).emit(event.name);
129
- }
130
- };
131
- RTSeeSignaling.stringifyEventData = function (event) {
132
- if (event.data) {
133
- try {
134
- return JSON.stringify(event.data);
135
- }
136
- catch (e) {
137
- console.log("Failed to stringify object: ", e);
138
- return null;
139
- }
140
- }
141
- };
142
- return RTSeeSignaling;
143
- }());
144
- exports.RTSeeSignaling = RTSeeSignaling;
145
- //# sourceMappingURL=RTSeeSignaling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RTSeeSignaling.js","sourceRoot":"","sources":["../../src/models/RTSeeSignaling.ts"],"names":[],"mappings":"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"}