fcr-core 3.10.1 → 3.10.5
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/engine/index.js +102 -108
- package/lib/imports.js +1 -0
- package/lib/media-control/desktop.js +22 -13
- package/lib/media-control/mobile.js +27 -19
- package/lib/media-control/type.d.ts +3 -3
- package/lib/monitor-control/index.js +17 -7
- package/lib/peer-session/index.js +120 -121
- package/lib/plugins/chat/chatroom.js +119 -96
- package/lib/plugins/chat/connector.js +69 -48
- package/lib/remote-control/index.js +194 -216
- package/lib/room-control/ability-control/index.js +20 -10
- package/lib/room-control/application-control/index.js +82 -75
- package/lib/room-control/group-control/index.js +31 -30
- package/lib/room-control/helpers/board-init-info-helper.js +16 -10
- package/lib/room-control/helpers/validation-helper.js +1 -1
- package/lib/room-control/index.js +70 -51
- package/lib/room-control/infinity-room-control/index.js +27 -19
- package/lib/room-control/interpreter-control/index.js +77 -65
- package/lib/room-control/interpreter-control/room.js +6 -4
- package/lib/room-control/join-before-host-waitingroom-control/index.js +6 -4
- package/lib/room-control/mainroom-control/index.js +37 -25
- package/lib/room-control/privilege-control/helper.js +28 -13
- package/lib/room-control/privilege-control/index.js +36 -28
- package/lib/room-control/room-connector-control/index.js +52 -49
- package/lib/room-control/room-connector-control/type.d.ts +1 -1
- package/lib/room-control/room-control-factory.js +10 -12
- package/lib/room-control/room-session/index.js +77 -74
- package/lib/room-control/shared-cache.js +63 -56
- package/lib/room-control/sharing-control/index.js +65 -57
- package/lib/room-control/stream-control/index.js +197 -193
- package/lib/room-control/stt-control/de-compress-gzip.js +10 -0
- package/lib/room-control/stt-control/index.js +93 -86
- package/lib/room-control/user-control/index.js +162 -155
- package/lib/room-control/waitingroom-control/index.js +18 -9
- package/lib/room-control/whiteboard-control/utils.js +4 -2
- package/lib/room-control/whiteboard-control-v1/board-subwindow.js +2 -1
- package/lib/room-control/whiteboard-control-v1/board-window.js +120 -103
- package/lib/room-control/whiteboard-control-v1/factory.js +7 -4
- package/lib/room-control/whiteboard-control-v1/index.js +80 -67
- package/lib/room-control/whiteboard-control-v1/mount-manager.js +4 -2
- package/lib/room-control/whiteboard-control-v1/utils.js +17 -14
- package/lib/room-control/whiteboard-control-v2/annotation-control/control.js +14 -10
- package/lib/room-control/whiteboard-control-v2/annotation-control/factory.js +17 -8
- package/lib/room-control/whiteboard-control-v2/base/index.js +61 -53
- package/lib/room-control/whiteboard-control-v2/base/main-window.js +39 -30
- package/lib/room-control/whiteboard-control-v2/utils.js +10 -10
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.js +45 -33
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.js +27 -11
- package/lib/room-control/widget-control/index.js +43 -33
- package/lib/room-router/index.js +66 -58
- package/lib/schema.d.ts +15 -15
- package/lib/service/api.js +446 -548
- package/lib/struct.js +5 -2
- package/lib/utilities/abortable-retry.js +3 -0
- package/lib/utilities/collection.js +15 -11
- package/lib/utilities/error-helpers.js +34 -27
- package/lib/utilities/error.js +4 -3
- package/lib/utilities/join-helper.js +37 -31
- package/lib/utilities/logger.js +8 -5
- package/lib/utilities/parameters.js +21 -10
- package/lib/utilities/retry-helpers.js +1 -0
- package/lib/utilities/stream.js +16 -11
- package/lib/utilities/user.js +4 -3
- package/lib/utilities/validate-params.js +1 -1
- package/lib/utilities/video-encoder-config.js +10 -5
- package/lib-es/engine/index.js +102 -108
- package/lib-es/media-control/desktop.js +22 -13
- package/lib-es/media-control/mobile.js +27 -19
- package/lib-es/monitor-control/index.js +16 -7
- package/lib-es/peer-session/index.js +120 -121
- package/lib-es/plugins/chat/chatroom.js +118 -95
- package/lib-es/plugins/chat/connector.js +67 -47
- package/lib-es/remote-control/index.js +194 -216
- package/lib-es/room-control/ability-control/index.js +19 -10
- package/lib-es/room-control/application-control/index.js +81 -75
- package/lib-es/room-control/group-control/index.js +31 -30
- package/lib-es/room-control/helpers/board-init-info-helper.js +15 -10
- package/lib-es/room-control/helpers/validation-helper.js +1 -1
- package/lib-es/room-control/index.js +69 -51
- package/lib-es/room-control/infinity-room-control/index.js +26 -19
- package/lib-es/room-control/interpreter-control/index.js +77 -65
- package/lib-es/room-control/interpreter-control/room.js +5 -4
- package/lib-es/room-control/join-before-host-waitingroom-control/index.js +5 -4
- package/lib-es/room-control/mainroom-control/index.js +37 -25
- package/lib-es/room-control/privilege-control/helper.js +27 -13
- package/lib-es/room-control/privilege-control/index.js +36 -28
- package/lib-es/room-control/room-connector-control/index.js +52 -49
- package/lib-es/room-control/room-control-factory.js +10 -12
- package/lib-es/room-control/room-session/index.js +77 -74
- package/lib-es/room-control/shared-cache.js +62 -56
- package/lib-es/room-control/sharing-control/index.js +64 -57
- package/lib-es/room-control/stream-control/index.js +197 -193
- package/lib-es/room-control/stt-control/de-compress-gzip.js +10 -0
- package/lib-es/room-control/stt-control/index.js +93 -86
- package/lib-es/room-control/user-control/index.js +162 -155
- package/lib-es/room-control/waitingroom-control/index.js +18 -9
- package/lib-es/room-control/whiteboard-control/utils.js +4 -2
- package/lib-es/room-control/whiteboard-control-v1/board-subwindow.js +2 -1
- package/lib-es/room-control/whiteboard-control-v1/board-window.js +120 -103
- package/lib-es/room-control/whiteboard-control-v1/factory.js +6 -4
- package/lib-es/room-control/whiteboard-control-v1/index.js +80 -67
- package/lib-es/room-control/whiteboard-control-v1/mount-manager.js +3 -2
- package/lib-es/room-control/whiteboard-control-v1/utils.js +17 -14
- package/lib-es/room-control/whiteboard-control-v2/annotation-control/control.js +13 -10
- package/lib-es/room-control/whiteboard-control-v2/annotation-control/factory.js +16 -8
- package/lib-es/room-control/whiteboard-control-v2/base/index.js +60 -53
- package/lib-es/room-control/whiteboard-control-v2/base/main-window.js +39 -30
- package/lib-es/room-control/whiteboard-control-v2/utils.js +10 -10
- package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/control.js +45 -33
- package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/factory.js +26 -11
- package/lib-es/room-control/widget-control/index.js +42 -33
- package/lib-es/room-router/index.js +66 -58
- package/lib-es/service/api.js +445 -548
- package/lib-es/struct.js +4 -2
- package/lib-es/utilities/abortable-retry.js +3 -0
- package/lib-es/utilities/collection.js +14 -11
- package/lib-es/utilities/error-helpers.js +33 -26
- package/lib-es/utilities/error.js +4 -3
- package/lib-es/utilities/join-helper.js +36 -29
- package/lib-es/utilities/logger.js +7 -5
- package/lib-es/utilities/parameters.js +21 -10
- package/lib-es/utilities/retry-helpers.js +1 -0
- package/lib-es/utilities/stream.js +15 -11
- package/lib-es/utilities/user.js +4 -3
- package/lib-es/utilities/validate-params.js +1 -1
- package/lib-es/utilities/video-encoder-config.js +10 -5
- package/package.json +4 -4
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/es.symbol.description.js");
|
|
4
|
+
require("core-js/modules/es.error.cause.js");
|
|
3
5
|
require("core-js/modules/es.array.push.js");
|
|
4
6
|
require("core-js/modules/esnext.function.metadata.js");
|
|
7
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
8
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
|
9
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
|
5
10
|
require("core-js/modules/esnext.symbol.metadata.js");
|
|
6
11
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
7
12
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -23,12 +28,18 @@ require("core-js/modules/esnext.map.merge.js");
|
|
|
23
28
|
require("core-js/modules/esnext.map.reduce.js");
|
|
24
29
|
require("core-js/modules/esnext.map.some.js");
|
|
25
30
|
require("core-js/modules/esnext.map.update.js");
|
|
31
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
32
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
33
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
26
34
|
var _imports = require("../imports");
|
|
27
35
|
var _error = require("../utilities/error");
|
|
28
36
|
var _logger = require("../utilities/logger");
|
|
29
37
|
var _schema = require("../schema");
|
|
30
38
|
var _validateParams = _interopRequireDefault(require("../utilities/validate-params"));
|
|
31
|
-
|
|
39
|
+
var _FcrPeerSessionControlImpl;
|
|
40
|
+
let _initProto, _startPeerSessionDecs, _stopPeerSessionDecs, _endPeerSessionDecs, _acceptPeerSessionDecs, _rejectPeerSessionDecs, _ref;
|
|
41
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
42
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
32
43
|
function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function (e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O.static = l, O.private = f, f ? 2 === o ? k = function (e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function (e) { return e[n]; }, (o < 2 || 4 === o) && (F = function (e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == typeof P && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol.for("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function (t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
|
|
33
44
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
34
45
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
@@ -42,29 +53,25 @@ const KEEPALIVE_TIMEOUT_MULTIPLIER = exports.KEEPALIVE_TIMEOUT_MULTIPLIER = 2;
|
|
|
42
53
|
/**
|
|
43
54
|
* @internal
|
|
44
55
|
*/
|
|
56
|
+
_ref = (_startPeerSessionDecs = [(0, _imports.trace)(['params']), (0, _validateParams.default)(_schema.fcrPeerSessionParamsSchema)], _stopPeerSessionDecs = [(0, _imports.trace)(['sessionId']), (0, _validateParams.default)(_schema.stringSchema)], _endPeerSessionDecs = [(0, _imports.trace)(['sessionId', 'cause']), (0, _validateParams.default)(_schema.stringSchema, _schema.stringKeyUnknownValueSchema.optional())], _acceptPeerSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], _rejectPeerSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], "logger");
|
|
45
57
|
class FcrPeerSessionControlImpl {
|
|
46
|
-
static {
|
|
47
|
-
[_initProto] = _applyDecs(this, [[_startPeerSessionDecs, 2, "startPeerSession"], [_stopPeerSessionDecs, 2, "stopPeerSession"], [_endPeerSessionDecs, 2, "endPeerSession"], [_acceptPeerSessionDecs, 2, "acceptPeerSession"], [_rejectPeerSessionDecs, 2, "rejectPeerSession"], [_imports.trace, 2, "release"]], []).e;
|
|
48
|
-
}
|
|
49
|
-
//@internal
|
|
50
|
-
[(_startPeerSessionDecs = [(0, _imports.trace)(['params']), (0, _validateParams.default)(_schema.fcrPeerSessionParamsSchema)], _stopPeerSessionDecs = [(0, _imports.trace)(['sessionId']), (0, _validateParams.default)(_schema.stringSchema)], _endPeerSessionDecs = [(0, _imports.trace)(['sessionId', 'cause']), (0, _validateParams.default)(_schema.stringSchema, _schema.stringKeyUnknownValueSchema.optional())], _acceptPeerSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], _rejectPeerSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], "logger")] = (_initProto(this), (0, _logger.createLogger)({
|
|
51
|
-
prefix: 'FcrPeerSessionControlImpl'
|
|
52
|
-
}));
|
|
53
|
-
//@internal
|
|
54
|
-
_observable = new _imports.AgoraObservable();
|
|
55
|
-
//@internal
|
|
56
|
-
_taskInterval = _imports.Duration.second(1);
|
|
57
|
-
//@internal
|
|
58
|
-
|
|
59
|
-
//@internal
|
|
60
|
-
_scheduleMap = new Map();
|
|
61
|
-
//@internal
|
|
62
|
-
_receivedMap = new Map();
|
|
63
|
-
//@internal
|
|
64
|
-
_engineObserver = {
|
|
65
|
-
onPeerMessageReceived: this._handlePeerMessage.bind(this)
|
|
66
|
-
};
|
|
67
58
|
constructor(_rteEngine, _api, _userId) {
|
|
59
|
+
//@internal
|
|
60
|
+
(0, _defineProperty2.default)(this, _ref, (_initProto(this), (0, _logger.createLogger)({
|
|
61
|
+
prefix: 'FcrPeerSessionControlImpl'
|
|
62
|
+
})));
|
|
63
|
+
//@internal
|
|
64
|
+
(0, _defineProperty2.default)(this, "_observable", new _imports.AgoraObservable());
|
|
65
|
+
//@internal
|
|
66
|
+
(0, _defineProperty2.default)(this, "_taskInterval", _imports.Duration.second(1));
|
|
67
|
+
//@internal
|
|
68
|
+
(0, _defineProperty2.default)(this, "_scheduleMap", new Map());
|
|
69
|
+
//@internal
|
|
70
|
+
(0, _defineProperty2.default)(this, "_receivedMap", new Map());
|
|
71
|
+
//@internal
|
|
72
|
+
(0, _defineProperty2.default)(this, "_engineObserver", {
|
|
73
|
+
onPeerMessageReceived: this._handlePeerMessage.bind(this)
|
|
74
|
+
});
|
|
68
75
|
this._rteEngine = _rteEngine;
|
|
69
76
|
this._api = _api;
|
|
70
77
|
this._userId = _userId;
|
|
@@ -76,7 +83,7 @@ class FcrPeerSessionControlImpl {
|
|
|
76
83
|
async startPeerSession(params) {
|
|
77
84
|
try {
|
|
78
85
|
const session = {
|
|
79
|
-
sessionId: (0, _imports.md5)(
|
|
86
|
+
sessionId: (0, _imports.md5)("".concat(Date.now())),
|
|
80
87
|
sessionKey: params.sessionKey,
|
|
81
88
|
payload: params.payload,
|
|
82
89
|
duration: params.duration,
|
|
@@ -87,28 +94,24 @@ class FcrPeerSessionControlImpl {
|
|
|
87
94
|
if (this._scheduleMap.has(session.sessionId)) {
|
|
88
95
|
throw (0, _error.generateFcrCoreClientError)(_imports.ErrorModuleCode.FCR_PEER_SESSION, _imports.DetailErrorCode.PEER_SESSION_ALREADY_EXISTS, 'peer session already exists');
|
|
89
96
|
}
|
|
90
|
-
const {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
keepAlive: params.keepAlive,
|
|
102
|
-
action: 0
|
|
103
|
-
});
|
|
97
|
+
const _await$this$_api$upda = await this._api.updatePeerSession({
|
|
98
|
+
userId: this._userId,
|
|
99
|
+
sessionId: session.sessionId,
|
|
100
|
+
sessionKey: session.sessionKey,
|
|
101
|
+
duration: session.duration,
|
|
102
|
+
payload: session.payload,
|
|
103
|
+
targetId: params.receiverId,
|
|
104
|
+
keepAlive: params.keepAlive,
|
|
105
|
+
action: 0
|
|
106
|
+
}),
|
|
107
|
+
interval = _await$this$_api$upda.data.interval;
|
|
104
108
|
const nextTs = Date.now() + interval;
|
|
105
|
-
this._scheduleMap.set(session.sessionId, {
|
|
106
|
-
...params,
|
|
109
|
+
this._scheduleMap.set(session.sessionId, _objectSpread(_objectSpread({}, params), {}, {
|
|
107
110
|
nextTs,
|
|
108
111
|
startTs: Date.now(),
|
|
109
112
|
action: 0
|
|
110
|
-
});
|
|
111
|
-
this.logger.info(
|
|
113
|
+
}));
|
|
114
|
+
this.logger.info("[PeerSession] put into session schedule: ".concat(session.sessionId, ", next ts: ").concat(nextTs, ", remain: ").concat(nextTs - Date.now(), "ms"));
|
|
112
115
|
return session.sessionId;
|
|
113
116
|
} catch (e) {
|
|
114
117
|
throw (0, _error.generateFcrCoreServerError)(_imports.DetailErrorCode.LOCAL_HTTP_REQUEST_FAILED, 'start peer session failed');
|
|
@@ -151,27 +154,23 @@ class FcrPeerSessionControlImpl {
|
|
|
151
154
|
if (session.keepAlive) {
|
|
152
155
|
const params = this._receivedMap.get(session.sessionId);
|
|
153
156
|
if (params) {
|
|
154
|
-
const {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
keepAlive: session.keepAlive,
|
|
166
|
-
action: 1
|
|
167
|
-
});
|
|
157
|
+
const _await$this$_api$upda2 = await this._api.updatePeerSession({
|
|
158
|
+
userId: this._userId,
|
|
159
|
+
sessionId: session.sessionId,
|
|
160
|
+
sessionKey: session.sessionKey,
|
|
161
|
+
duration: session.duration,
|
|
162
|
+
payload: session.payload,
|
|
163
|
+
targetId: session.senderId,
|
|
164
|
+
keepAlive: session.keepAlive,
|
|
165
|
+
action: 1
|
|
166
|
+
}),
|
|
167
|
+
interval = _await$this$_api$upda2.data.interval;
|
|
168
168
|
const _now = Date.now();
|
|
169
|
-
this._receivedMap.set(session.sessionId, {
|
|
170
|
-
...params,
|
|
169
|
+
this._receivedMap.set(session.sessionId, _objectSpread(_objectSpread({}, params), {}, {
|
|
171
170
|
nextTs: _now + interval,
|
|
172
171
|
startTs: _now,
|
|
173
172
|
action: 1
|
|
174
|
-
});
|
|
173
|
+
}));
|
|
175
174
|
return;
|
|
176
175
|
}
|
|
177
176
|
}
|
|
@@ -254,7 +253,7 @@ class FcrPeerSessionControlImpl {
|
|
|
254
253
|
action: params.action
|
|
255
254
|
};
|
|
256
255
|
if (this._isSessionExpired(session)) {
|
|
257
|
-
this.logger.info(
|
|
256
|
+
this.logger.info("peer session expired, removed: ".concat(session.sessionId));
|
|
258
257
|
if (session.keepAlive) {
|
|
259
258
|
await this.endPeerSession(session.sessionId);
|
|
260
259
|
}
|
|
@@ -266,32 +265,28 @@ class FcrPeerSessionControlImpl {
|
|
|
266
265
|
|
|
267
266
|
// check timeout
|
|
268
267
|
if (params.nextTs < Date.now()) {
|
|
269
|
-
this.logger.info(
|
|
268
|
+
this.logger.info("ping session: ".concat(session.sessionId));
|
|
270
269
|
try {
|
|
271
|
-
const {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
keepAlive: params.keepAlive,
|
|
283
|
-
action: params.action
|
|
284
|
-
});
|
|
270
|
+
const _await$this$_api$upda3 = await this._api.updatePeerSession({
|
|
271
|
+
userId: this._userId,
|
|
272
|
+
sessionId: session.sessionId,
|
|
273
|
+
sessionKey: session.sessionKey,
|
|
274
|
+
duration: params.duration,
|
|
275
|
+
payload: session.payload,
|
|
276
|
+
targetId: params.receiverId,
|
|
277
|
+
keepAlive: params.keepAlive,
|
|
278
|
+
action: params.action
|
|
279
|
+
}),
|
|
280
|
+
interval = _await$this$_api$upda3.data.interval;
|
|
285
281
|
const nextTs = Date.now() + interval;
|
|
286
282
|
if (this._scheduleMap.has(session.sessionId)) {
|
|
287
|
-
this._scheduleMap.set(session.sessionId, {
|
|
288
|
-
...params,
|
|
283
|
+
this._scheduleMap.set(session.sessionId, _objectSpread(_objectSpread({}, params), {}, {
|
|
289
284
|
nextTs
|
|
290
|
-
});
|
|
291
|
-
this.logger.info(
|
|
285
|
+
}));
|
|
286
|
+
this.logger.info("[PeerSession] refresh session schedule: ".concat(session.sessionId, ", next ts: ").concat(nextTs));
|
|
292
287
|
}
|
|
293
288
|
} catch (e) {
|
|
294
|
-
this.logger.error(
|
|
289
|
+
this.logger.error("ping session failed: ".concat(e));
|
|
295
290
|
}
|
|
296
291
|
}
|
|
297
292
|
}
|
|
@@ -299,7 +294,7 @@ class FcrPeerSessionControlImpl {
|
|
|
299
294
|
for (const key of this._receivedMap.keys()) {
|
|
300
295
|
const session = this._receivedMap.get(key);
|
|
301
296
|
if (this._isSessionExpired(session)) {
|
|
302
|
-
this.logger.info(
|
|
297
|
+
this.logger.info("peer session expired, removed: ".concat(key));
|
|
303
298
|
if (session.keepAlive) {
|
|
304
299
|
await this.endPeerSession(key);
|
|
305
300
|
}
|
|
@@ -311,23 +306,21 @@ class FcrPeerSessionControlImpl {
|
|
|
311
306
|
// 如果会话是keepAlive的,并且距离上次ping的时间超过2倍interval,则认为会话已过期(可能因为对方或己方已经掉线),需要结束会话
|
|
312
307
|
if (session.keepAlive && session.nextTs + session.interval * KEEPALIVE_TIMEOUT_MULTIPLIER < Date.now()) {
|
|
313
308
|
await this.endPeerSession(key);
|
|
314
|
-
this.logger.info(
|
|
309
|
+
this.logger.info("peer session has not been pinged, removed: ".concat(key));
|
|
315
310
|
}
|
|
316
311
|
}
|
|
317
312
|
}
|
|
318
313
|
|
|
319
314
|
//@internal
|
|
320
315
|
async _handlePeerMessage(message) {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
payload
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
const logContext = `cmd=${cmd}, sessionKey=${data.sessionKey}, sessionId=${data.sessionUuid}, ` + `action=${String(data.action)}, senderId=${senderId}, keepAlive=${!!data.keepAlive}`;
|
|
330
|
-
this.logger.info(`[PeerSession] received peer message: ${logContext}, payload=${JSON.stringify(data.payload ?? {})}`);
|
|
316
|
+
var _data$payload;
|
|
317
|
+
const senderId = message.senderId,
|
|
318
|
+
payload = message.payload;
|
|
319
|
+
const _ref2 = payload,
|
|
320
|
+
data = _ref2.data,
|
|
321
|
+
cmd = _ref2.cmd;
|
|
322
|
+
const logContext = "cmd=".concat(cmd, ", sessionKey=").concat(data.sessionKey, ", sessionId=").concat(data.sessionUuid, ", ") + "action=".concat(String(data.action), ", senderId=").concat(senderId, ", keepAlive=").concat(!!data.keepAlive);
|
|
323
|
+
this.logger.info("[PeerSession] received peer message: ".concat(logContext, ", payload=").concat(JSON.stringify((_data$payload = data.payload) !== null && _data$payload !== void 0 ? _data$payload : {})));
|
|
331
324
|
if (cmd === '1001') {
|
|
332
325
|
const session = {
|
|
333
326
|
sessionId: data.sessionUuid,
|
|
@@ -347,53 +340,52 @@ class FcrPeerSessionControlImpl {
|
|
|
347
340
|
if (!this._isSessionExpired(session)) {
|
|
348
341
|
if (data.action === 1) {
|
|
349
342
|
if (this._scheduleMap.has(session.sessionId)) {
|
|
343
|
+
var _session$payload, _ref3, _data$payload2;
|
|
350
344
|
const sessionResponse = {
|
|
351
345
|
sessionId: session.sessionId,
|
|
352
346
|
sessionKey: session.sessionKey,
|
|
353
347
|
responderId: senderId,
|
|
354
|
-
payload: session.payload
|
|
355
|
-
cause: data.payload
|
|
348
|
+
payload: (_session$payload = session.payload) !== null && _session$payload !== void 0 ? _session$payload : {},
|
|
349
|
+
cause: (_ref3 = (_data$payload2 = data.payload) === null || _data$payload2 === void 0 ? void 0 : _data$payload2.cause) !== null && _ref3 !== void 0 ? _ref3 : {},
|
|
356
350
|
keepAlive: !!session.keepAlive
|
|
357
351
|
};
|
|
358
352
|
const params = this._scheduleMap.get(session.sessionId);
|
|
359
|
-
this._scheduleMap.set(session.sessionId, {
|
|
360
|
-
...params,
|
|
353
|
+
this._scheduleMap.set(session.sessionId, _objectSpread(_objectSpread({}, params), {}, {
|
|
361
354
|
action: 1
|
|
362
|
-
});
|
|
363
|
-
this.logger.info(
|
|
355
|
+
}));
|
|
356
|
+
this.logger.info("[PeerSession] forward peer session accepted to observers: ".concat(logContext));
|
|
364
357
|
this._observable.notifyObservers('onPeerSessionAccepted', sessionResponse);
|
|
365
358
|
} else {
|
|
366
|
-
this.logger.info(
|
|
359
|
+
this.logger.info("[PeerSession] ignore peer session accepted without local schedule: ".concat(logContext));
|
|
367
360
|
}
|
|
368
361
|
if (this._receivedMap.has(session.sessionId)) {
|
|
369
|
-
this._receivedMap.set(session.sessionId, {
|
|
370
|
-
...session,
|
|
362
|
+
this._receivedMap.set(session.sessionId, _objectSpread(_objectSpread({}, session), {}, {
|
|
371
363
|
nextTs: Date.now() + data.interval,
|
|
372
364
|
startTs: Date.now(),
|
|
373
365
|
action: 1
|
|
374
|
-
});
|
|
366
|
+
}));
|
|
375
367
|
}
|
|
376
368
|
return;
|
|
377
369
|
} else {
|
|
378
370
|
if (!this._receivedMap.has(session.sessionId)) {
|
|
379
|
-
this.logger.info(
|
|
371
|
+
this.logger.info("[PeerSession] forward peer session request to observers: ".concat(logContext));
|
|
380
372
|
this._observable.notifyObservers('onPeerSessionReceived', session);
|
|
381
373
|
} else {
|
|
382
|
-
this.logger.info(
|
|
374
|
+
this.logger.info("[PeerSession] peer session request already cached, update cache only: ".concat(logContext));
|
|
383
375
|
}
|
|
384
|
-
this._receivedMap.set(session.sessionId, {
|
|
385
|
-
...session,
|
|
376
|
+
this._receivedMap.set(session.sessionId, _objectSpread(_objectSpread({}, session), {}, {
|
|
386
377
|
nextTs: Date.now() + data.interval,
|
|
387
378
|
startTs: Date.now(),
|
|
388
379
|
action: 0
|
|
389
|
-
});
|
|
380
|
+
}));
|
|
390
381
|
}
|
|
391
382
|
} else {
|
|
392
|
-
this.logger.info(
|
|
383
|
+
this.logger.info("[PeerSession] ignore expired peer session message: ".concat(logContext, ", ") + "timestamp=".concat(session.timestamp, ", duration=").concat(session.duration));
|
|
393
384
|
}
|
|
394
385
|
} else if (cmd === '1002') {
|
|
395
386
|
if (data.action === 1) {
|
|
396
387
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
388
|
+
var _session$payload2, _ref4, _data$payload3;
|
|
397
389
|
const session = this._scheduleMap.get(data.sessionUuid);
|
|
398
390
|
const sessionResponse = {
|
|
399
391
|
sessionId: data.sessionUuid,
|
|
@@ -401,18 +393,19 @@ class FcrPeerSessionControlImpl {
|
|
|
401
393
|
responderId: senderId,
|
|
402
394
|
// FIXME: session may be lost when the client refreshes
|
|
403
395
|
// get payload from original session
|
|
404
|
-
payload: session.payload
|
|
405
|
-
cause: data.payload
|
|
396
|
+
payload: (_session$payload2 = session.payload) !== null && _session$payload2 !== void 0 ? _session$payload2 : {},
|
|
397
|
+
cause: (_ref4 = (_data$payload3 = data.payload) === null || _data$payload3 === void 0 ? void 0 : _data$payload3.cause) !== null && _ref4 !== void 0 ? _ref4 : {},
|
|
406
398
|
keepAlive: !!data.keepAlive
|
|
407
399
|
};
|
|
408
400
|
this._scheduleMap.delete(data.sessionUuid);
|
|
409
|
-
this.logger.info(
|
|
401
|
+
this.logger.info("[PeerSession] forward peer session accepted to observers: ".concat(logContext));
|
|
410
402
|
this._observable.notifyObservers('onPeerSessionAccepted', sessionResponse);
|
|
411
403
|
} else {
|
|
412
|
-
this.logger.info(
|
|
404
|
+
this.logger.info("[PeerSession] ignore peer session accepted without local schedule: ".concat(logContext));
|
|
413
405
|
}
|
|
414
406
|
} else if (data.action === 2) {
|
|
415
407
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
408
|
+
var _session$payload3, _ref5, _data$payload4;
|
|
416
409
|
const session = this._scheduleMap.get(data.sessionUuid);
|
|
417
410
|
const sessionResponse = {
|
|
418
411
|
sessionId: data.sessionUuid,
|
|
@@ -420,27 +413,28 @@ class FcrPeerSessionControlImpl {
|
|
|
420
413
|
responderId: senderId,
|
|
421
414
|
// FIXME: session may be lost when the client refreshes
|
|
422
415
|
// get payload from original session
|
|
423
|
-
payload: session.payload
|
|
424
|
-
cause: data.payload
|
|
416
|
+
payload: (_session$payload3 = session.payload) !== null && _session$payload3 !== void 0 ? _session$payload3 : {},
|
|
417
|
+
cause: (_ref5 = (_data$payload4 = data.payload) === null || _data$payload4 === void 0 ? void 0 : _data$payload4.cause) !== null && _ref5 !== void 0 ? _ref5 : {},
|
|
425
418
|
keepAlive: !!data.keepAlive
|
|
426
419
|
};
|
|
427
420
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
428
421
|
this._scheduleMap.delete(data.sessionUuid);
|
|
429
|
-
this.logger.info(
|
|
422
|
+
this.logger.info("[PeerSession] forward peer session rejected to observers: ".concat(logContext));
|
|
430
423
|
this._observable.notifyObservers('onPeerSessionRejected', sessionResponse);
|
|
431
424
|
}
|
|
432
425
|
} else {
|
|
433
|
-
this.logger.info(
|
|
426
|
+
this.logger.info("[PeerSession] ignore peer session rejected without local schedule: ".concat(logContext));
|
|
434
427
|
}
|
|
435
428
|
} else if (data.action === 3) {
|
|
436
429
|
const scheduleSession = this._scheduleMap.get(data.sessionUuid);
|
|
437
430
|
const receivedSession = this._receivedMap.get(data.sessionUuid);
|
|
438
431
|
const session = scheduleSession || receivedSession;
|
|
439
432
|
if (session) {
|
|
433
|
+
var _ref6, _data$payload5;
|
|
440
434
|
const params = {
|
|
441
435
|
sessionId: data.sessionUuid,
|
|
442
436
|
fromUserId: senderId,
|
|
443
|
-
cause: data.payload
|
|
437
|
+
cause: (_ref6 = (_data$payload5 = data.payload) === null || _data$payload5 === void 0 ? void 0 : _data$payload5.cause) !== null && _ref6 !== void 0 ? _ref6 : {}
|
|
444
438
|
};
|
|
445
439
|
if (scheduleSession) {
|
|
446
440
|
this._scheduleMap.delete(data.sessionUuid);
|
|
@@ -449,15 +443,15 @@ class FcrPeerSessionControlImpl {
|
|
|
449
443
|
this._receivedMap.delete(data.sessionUuid);
|
|
450
444
|
}
|
|
451
445
|
this._observable.notifyObservers('onPeerSessionEnded', params.sessionId, params.fromUserId, params.cause);
|
|
452
|
-
this.logger.info(
|
|
446
|
+
this.logger.info("[PeerSession] forward peer session ended to observers: ".concat(logContext));
|
|
453
447
|
} else {
|
|
454
|
-
this.logger.info(
|
|
448
|
+
this.logger.info("[PeerSession] ignore peer session ended without cached session: ".concat(logContext));
|
|
455
449
|
}
|
|
456
450
|
} else {
|
|
457
|
-
this.logger.info(
|
|
451
|
+
this.logger.info("[PeerSession] ignore peer session response with unknown action: ".concat(logContext));
|
|
458
452
|
}
|
|
459
453
|
} else {
|
|
460
|
-
this.logger.info(
|
|
454
|
+
this.logger.info("[PeerSession] ignore unsupported peer session cmd: ".concat(logContext));
|
|
461
455
|
}
|
|
462
456
|
}
|
|
463
457
|
|
|
@@ -469,4 +463,9 @@ class FcrPeerSessionControlImpl {
|
|
|
469
463
|
this.addObserver((0, _logger.generateLogObserver)(this.logger, [['onPeerSessionAccepted', ['session']], ['onPeerSessionReceived', ['session']], ['onPeerSessionRejected', ['session']], ['onPeerSessionEnded', ['sessionId', 'fromUserId', 'reason']]]));
|
|
470
464
|
}
|
|
471
465
|
}
|
|
472
|
-
exports.FcrPeerSessionControlImpl = FcrPeerSessionControlImpl;
|
|
466
|
+
exports.FcrPeerSessionControlImpl = FcrPeerSessionControlImpl;
|
|
467
|
+
_FcrPeerSessionControlImpl = FcrPeerSessionControlImpl;
|
|
468
|
+
var _applyDecs$e = _applyDecs(_FcrPeerSessionControlImpl, [[_startPeerSessionDecs, 2, "startPeerSession"], [_stopPeerSessionDecs, 2, "stopPeerSession"], [_endPeerSessionDecs, 2, "endPeerSession"], [_acceptPeerSessionDecs, 2, "acceptPeerSession"], [_rejectPeerSessionDecs, 2, "rejectPeerSession"], [_imports.trace, 2, "release"]], []).e;
|
|
469
|
+
var _applyDecs$e2 = (0, _slicedToArray2.default)(_applyDecs$e, 1);
|
|
470
|
+
_initProto = _applyDecs$e2[0];
|
|
471
|
+
_applyDecs$e;
|