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,11 @@
|
|
|
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.filter.js");
|
|
8
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
|
5
9
|
require("core-js/modules/esnext.symbol.metadata.js");
|
|
6
10
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
7
11
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -25,6 +29,9 @@ require("core-js/modules/esnext.map.merge.js");
|
|
|
25
29
|
require("core-js/modules/esnext.map.reduce.js");
|
|
26
30
|
require("core-js/modules/esnext.map.some.js");
|
|
27
31
|
require("core-js/modules/esnext.map.update.js");
|
|
32
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
33
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
34
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
28
35
|
var _imports = require("../../imports");
|
|
29
36
|
var _schema = require("../../schema");
|
|
30
37
|
var _type = require("../../type");
|
|
@@ -32,38 +39,37 @@ var _error = require("../../utilities/error");
|
|
|
32
39
|
var _logger = require("../../utilities/logger");
|
|
33
40
|
var _validateParams = _interopRequireDefault(require("../../utilities/validate-params"));
|
|
34
41
|
var _helpers = require("../helpers");
|
|
35
|
-
|
|
42
|
+
var _FcrRoomSessionControlImpl;
|
|
43
|
+
let _initProto, _startRoomSessionDecs, _stopRoomSessionDecs, _acceptRoomSessionDecs, _rejectRoomSessionDecs, _ref;
|
|
44
|
+
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; }
|
|
45
|
+
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; }
|
|
36
46
|
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)]; } }; }
|
|
37
47
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
38
48
|
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); }
|
|
39
49
|
function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
|
|
40
50
|
function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; }
|
|
51
|
+
_ref = (_startRoomSessionDecs = [(0, _imports.trace)(['params', 'targetRoles']), (0, _validateParams.default)(_schema.fcrRoomSessionParamsSchema, _schema.fcrPrivilegeUserRoleArraySchema.optional())], _stopRoomSessionDecs = [(0, _imports.trace)(['sessionId']), (0, _validateParams.default)(_schema.stringSchema)], _acceptRoomSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], _rejectRoomSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], "logger");
|
|
41
52
|
/**
|
|
42
53
|
* @internal
|
|
43
54
|
*/
|
|
44
55
|
class FcrRoomSessionControlImpl {
|
|
45
|
-
static {
|
|
46
|
-
[_initProto] = _applyDecs(this, [[_startRoomSessionDecs, 2, "startRoomSession"], [_stopRoomSessionDecs, 2, "stopRoomSession"], [_acceptRoomSessionDecs, 2, "acceptRoomSession"], [_rejectRoomSessionDecs, 2, "rejectRoomSession"], [_imports.trace, 2, "release"]], []).e;
|
|
47
|
-
}
|
|
48
|
-
//@internal
|
|
49
|
-
[(_startRoomSessionDecs = [(0, _imports.trace)(['params', 'targetRoles']), (0, _validateParams.default)(_schema.fcrRoomSessionParamsSchema, _schema.fcrPrivilegeUserRoleArraySchema.optional())], _stopRoomSessionDecs = [(0, _imports.trace)(['sessionId']), (0, _validateParams.default)(_schema.stringSchema)], _acceptRoomSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], _rejectRoomSessionDecs = [(0, _imports.trace)(['session', 'cause']), (0, _validateParams.default)(_schema.fcrSessionBaseSchema, _schema.stringKeyUnknownValueSchema.optional())], "logger")] = (_initProto(this), (0, _logger.createLogger)({
|
|
50
|
-
prefix: 'FcrRoomSessionControlImpl'
|
|
51
|
-
}));
|
|
52
|
-
//@internal
|
|
53
|
-
_observable = new _imports.AgoraObservable();
|
|
54
|
-
//@internal
|
|
55
|
-
_taskInterval = _imports.Duration.second(1);
|
|
56
|
-
//@internal
|
|
57
|
-
|
|
58
|
-
//@internal
|
|
59
|
-
_scheduleMap = new Map();
|
|
60
|
-
//@internal
|
|
61
|
-
_receivedMap = new Map();
|
|
62
|
-
//@internal
|
|
63
|
-
_roomObserver = {
|
|
64
|
-
onRoomMessageReceived: this._handleRoomMessage.bind(this)
|
|
65
|
-
};
|
|
66
56
|
constructor(_roomControl, _api, _userId) {
|
|
57
|
+
//@internal
|
|
58
|
+
(0, _defineProperty2.default)(this, _ref, (_initProto(this), (0, _logger.createLogger)({
|
|
59
|
+
prefix: 'FcrRoomSessionControlImpl'
|
|
60
|
+
})));
|
|
61
|
+
//@internal
|
|
62
|
+
(0, _defineProperty2.default)(this, "_observable", new _imports.AgoraObservable());
|
|
63
|
+
//@internal
|
|
64
|
+
(0, _defineProperty2.default)(this, "_taskInterval", _imports.Duration.second(1));
|
|
65
|
+
//@internal
|
|
66
|
+
(0, _defineProperty2.default)(this, "_scheduleMap", new Map());
|
|
67
|
+
//@internal
|
|
68
|
+
(0, _defineProperty2.default)(this, "_receivedMap", new Map());
|
|
69
|
+
//@internal
|
|
70
|
+
(0, _defineProperty2.default)(this, "_roomObserver", {
|
|
71
|
+
onRoomMessageReceived: this._handleRoomMessage.bind(this)
|
|
72
|
+
});
|
|
67
73
|
this._roomControl = _roomControl;
|
|
68
74
|
this._api = _api;
|
|
69
75
|
this._userId = _userId;
|
|
@@ -75,34 +81,30 @@ class FcrRoomSessionControlImpl {
|
|
|
75
81
|
async startRoomSession(params, targetRoles) {
|
|
76
82
|
try {
|
|
77
83
|
const session = {
|
|
78
|
-
sessionId: (0, _imports.md5)(
|
|
84
|
+
sessionId: (0, _imports.md5)("".concat(this._userId).concat(Date.now())),
|
|
79
85
|
sessionKey: params.sessionKey,
|
|
80
86
|
payload: params.payload,
|
|
81
87
|
duration: params.duration,
|
|
82
88
|
sender: this._userId,
|
|
83
89
|
targetRoles: targetRoles ? targetRoles.map(role => _type.FcrPrivilegeUserRoleToStringMap[role]) : undefined
|
|
84
90
|
};
|
|
85
|
-
const {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
targetId: this._roomControl.getRoomInfo().roomId,
|
|
96
|
-
targetRoles: session.targetRoles
|
|
97
|
-
});
|
|
91
|
+
const _await$this$_api$upda = await this._api.updateRoomSession({
|
|
92
|
+
userId: this._userId,
|
|
93
|
+
sessionId: session.sessionId,
|
|
94
|
+
sessionKey: session.sessionKey,
|
|
95
|
+
duration: session.duration,
|
|
96
|
+
payload: session.payload,
|
|
97
|
+
targetId: this._roomControl.getRoomInfo().roomId,
|
|
98
|
+
targetRoles: session.targetRoles
|
|
99
|
+
}),
|
|
100
|
+
interval = _await$this$_api$upda.data.interval;
|
|
98
101
|
const nextTs = Date.now() + interval;
|
|
99
|
-
this._scheduleMap.set(session.sessionId, {
|
|
100
|
-
...params,
|
|
102
|
+
this._scheduleMap.set(session.sessionId, _objectSpread(_objectSpread({}, params), {}, {
|
|
101
103
|
targetRoles: session.targetRoles,
|
|
102
104
|
nextTs,
|
|
103
105
|
startTs: Date.now()
|
|
104
|
-
});
|
|
105
|
-
this.logger.info(
|
|
106
|
+
}));
|
|
107
|
+
this.logger.info("[RoomSession] put into session schedule: ".concat(session.sessionId, ", next ts: ").concat(nextTs, ", remain: ").concat(nextTs - Date.now(), "ms"));
|
|
106
108
|
return session.sessionId;
|
|
107
109
|
} catch (e) {
|
|
108
110
|
throw (0, _error.generateFcrCoreServerError)(_imports.DetailErrorCode.LOCAL_HTTP_REQUEST_FAILED, 'start room session failed');
|
|
@@ -191,37 +193,33 @@ class FcrRoomSessionControlImpl {
|
|
|
191
193
|
interval: 0
|
|
192
194
|
};
|
|
193
195
|
if (this._isSessionExpired(session)) {
|
|
194
|
-
this.logger.info(
|
|
196
|
+
this.logger.info("room session expired, removed: ".concat(session.sessionId));
|
|
195
197
|
this._scheduleMap.delete(session.sessionId);
|
|
196
198
|
continue;
|
|
197
199
|
}
|
|
198
200
|
// check timeout
|
|
199
201
|
if (params.nextTs < Date.now()) {
|
|
200
|
-
this.logger.info(
|
|
202
|
+
this.logger.info("ping session: ".concat(session.sessionId));
|
|
201
203
|
try {
|
|
202
|
-
const {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
targetRoles: session.targetRoles,
|
|
213
|
-
targetId: this._roomControl.getRoomInfo().roomId
|
|
214
|
-
});
|
|
204
|
+
const _await$this$_api$upda2 = await this._api.updateRoomSession({
|
|
205
|
+
userId: this._userId,
|
|
206
|
+
sessionId: session.sessionId,
|
|
207
|
+
sessionKey: session.sessionKey,
|
|
208
|
+
duration: params.duration,
|
|
209
|
+
payload: session.payload,
|
|
210
|
+
targetRoles: session.targetRoles,
|
|
211
|
+
targetId: this._roomControl.getRoomInfo().roomId
|
|
212
|
+
}),
|
|
213
|
+
interval = _await$this$_api$upda2.data.interval;
|
|
215
214
|
const nextTs = Date.now() + interval;
|
|
216
215
|
if (this._scheduleMap.has(session.sessionId)) {
|
|
217
|
-
this._scheduleMap.set(session.sessionId, {
|
|
218
|
-
...params,
|
|
216
|
+
this._scheduleMap.set(session.sessionId, _objectSpread(_objectSpread({}, params), {}, {
|
|
219
217
|
nextTs
|
|
220
|
-
});
|
|
221
|
-
this.logger.info(
|
|
218
|
+
}));
|
|
219
|
+
this.logger.info("[RoomSession] refresh session schedule: ".concat(session.sessionId, ", next ts: ").concat(nextTs));
|
|
222
220
|
}
|
|
223
221
|
} catch (e) {
|
|
224
|
-
this.logger.error(
|
|
222
|
+
this.logger.error("ping session failed: ".concat(e));
|
|
225
223
|
}
|
|
226
224
|
}
|
|
227
225
|
}
|
|
@@ -230,18 +228,16 @@ class FcrRoomSessionControlImpl {
|
|
|
230
228
|
const session = this._receivedMap.get(key);
|
|
231
229
|
if (this._isSessionExpired(session)) {
|
|
232
230
|
this._receivedMap.delete(key);
|
|
233
|
-
this.logger.info(
|
|
231
|
+
this.logger.info("delete session callback: ".concat(key));
|
|
234
232
|
}
|
|
235
233
|
}
|
|
236
234
|
}
|
|
237
235
|
|
|
238
236
|
//@internal
|
|
239
237
|
async _handleRoomMessage(roomId, message) {
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
cmd
|
|
244
|
-
} = message;
|
|
238
|
+
const senderId = message.senderId,
|
|
239
|
+
payload = message.payload,
|
|
240
|
+
cmd = message.cmd;
|
|
245
241
|
const data = payload;
|
|
246
242
|
if (cmd === _helpers.ROOM_MESSAGE_COMMANDS.ROOM_SESSION_REQUEST) {
|
|
247
243
|
const session = {
|
|
@@ -259,7 +255,7 @@ class FcrRoomSessionControlImpl {
|
|
|
259
255
|
}
|
|
260
256
|
if (!this._isSessionExpired(session)) {
|
|
261
257
|
if (!this._receivedMap.has(session.sessionId)) {
|
|
262
|
-
this.logger.info(
|
|
258
|
+
this.logger.info("[RoomSession] received room session request ".concat(JSON.stringify(session)));
|
|
263
259
|
this._observable.notifyObservers('onRoomSessionReceived', roomId, session);
|
|
264
260
|
}
|
|
265
261
|
this._receivedMap.set(session.sessionId, session);
|
|
@@ -269,6 +265,7 @@ class FcrRoomSessionControlImpl {
|
|
|
269
265
|
// 但是点对点消息实际上触发的是 AgoraRteEngine.onPeerMessageReceived 事件. 所以这里并不会收到 cmd === ROOM_SESSION_ACCEPT 和 ROOM_SESSION_REJECT 的消息.
|
|
270
266
|
if (data.action === 1) {
|
|
271
267
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
268
|
+
var _session$payload, _ref2, _data$payload;
|
|
272
269
|
const session = this._scheduleMap.get(data.sessionUuid);
|
|
273
270
|
const sessionResponse = {
|
|
274
271
|
sessionId: data.sessionUuid,
|
|
@@ -276,15 +273,16 @@ class FcrRoomSessionControlImpl {
|
|
|
276
273
|
responderId: senderId,
|
|
277
274
|
// FIXME: session may be lost when the client refreshes
|
|
278
275
|
// get payload from original session
|
|
279
|
-
payload: session.payload
|
|
280
|
-
cause: data.payload
|
|
276
|
+
payload: (_session$payload = session.payload) !== null && _session$payload !== void 0 ? _session$payload : {},
|
|
277
|
+
cause: (_ref2 = (_data$payload = data.payload) === null || _data$payload === void 0 ? void 0 : _data$payload.cause) !== null && _ref2 !== void 0 ? _ref2 : {}
|
|
281
278
|
};
|
|
282
|
-
this.logger.info(
|
|
279
|
+
this.logger.info("[RoomSession] received room session accepted ".concat(JSON.stringify(sessionResponse)));
|
|
283
280
|
this._scheduleMap.delete(data.sessionUuid);
|
|
284
281
|
this._observable.notifyObservers('onRoomSessionAccepted', roomId, sessionResponse);
|
|
285
282
|
}
|
|
286
283
|
} else if (data.action === 2) {
|
|
287
284
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
285
|
+
var _session$payload2, _ref3, _data$payload2;
|
|
288
286
|
const session = this._scheduleMap.get(data.sessionUuid);
|
|
289
287
|
const sessionResponse = {
|
|
290
288
|
sessionId: data.sessionUuid,
|
|
@@ -292,10 +290,10 @@ class FcrRoomSessionControlImpl {
|
|
|
292
290
|
responderId: senderId,
|
|
293
291
|
// FIXME: session may be lost when the client refreshes
|
|
294
292
|
// get payload from original session
|
|
295
|
-
payload: session.payload
|
|
296
|
-
cause: data.payload
|
|
293
|
+
payload: (_session$payload2 = session.payload) !== null && _session$payload2 !== void 0 ? _session$payload2 : {},
|
|
294
|
+
cause: (_ref3 = (_data$payload2 = data.payload) === null || _data$payload2 === void 0 ? void 0 : _data$payload2.cause) !== null && _ref3 !== void 0 ? _ref3 : {}
|
|
297
295
|
};
|
|
298
|
-
this.logger.info(
|
|
296
|
+
this.logger.info("[RoomSession] received room session rejected ".concat(JSON.stringify(sessionResponse)));
|
|
299
297
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
300
298
|
this._scheduleMap.delete(data.sessionUuid);
|
|
301
299
|
this._observable.notifyObservers('onRoomSessionRejected', roomId, sessionResponse);
|
|
@@ -313,4 +311,9 @@ class FcrRoomSessionControlImpl {
|
|
|
313
311
|
this.addObserver((0, _logger.generateLogObserver)(this.logger, [['onRoomSessionAccepted', ['roomId', 'response']], ['onRoomSessionRejected', ['roomId', 'response']], ['onRoomSessionReceived', ['roomId', 'session']]]));
|
|
314
312
|
}
|
|
315
313
|
}
|
|
316
|
-
exports.FcrRoomSessionControlImpl = FcrRoomSessionControlImpl;
|
|
314
|
+
exports.FcrRoomSessionControlImpl = FcrRoomSessionControlImpl;
|
|
315
|
+
_FcrRoomSessionControlImpl = FcrRoomSessionControlImpl;
|
|
316
|
+
var _applyDecs$e = _applyDecs(_FcrRoomSessionControlImpl, [[_startRoomSessionDecs, 2, "startRoomSession"], [_stopRoomSessionDecs, 2, "stopRoomSession"], [_acceptRoomSessionDecs, 2, "acceptRoomSession"], [_rejectRoomSessionDecs, 2, "rejectRoomSession"], [_imports.trace, 2, "release"]], []).e;
|
|
317
|
+
var _applyDecs$e2 = (0, _slicedToArray2.default)(_applyDecs$e, 1);
|
|
318
|
+
_initProto = _applyDecs$e2[0];
|
|
319
|
+
_applyDecs$e;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
@@ -19,71 +20,77 @@ require("core-js/modules/esnext.map.merge.js");
|
|
|
19
20
|
require("core-js/modules/esnext.map.reduce.js");
|
|
20
21
|
require("core-js/modules/esnext.map.some.js");
|
|
21
22
|
require("core-js/modules/esnext.map.update.js");
|
|
23
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
22
25
|
class FcrRoomCache {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
constructor() {
|
|
27
|
+
(0, _defineProperty2.default)(this, "_platformMapByUserId", new Map());
|
|
28
|
+
(0, _defineProperty2.default)(this, "_avatarMapByUserId", new Map());
|
|
29
|
+
(0, _defineProperty2.default)(this, "_userMapByUserId", new Map());
|
|
30
|
+
//@internal
|
|
31
|
+
(0, _defineProperty2.default)(this, "_userList", []);
|
|
32
|
+
(0, _defineProperty2.default)(this, "setUserMapByUserId", (userId, user) => {
|
|
33
|
+
this._userMapByUserId.set(userId, user);
|
|
34
|
+
});
|
|
35
|
+
(0, _defineProperty2.default)(this, "deleteUserMapByUserId", userId => {
|
|
36
|
+
this._userMapByUserId.delete(userId);
|
|
37
|
+
});
|
|
38
|
+
(0, _defineProperty2.default)(this, "setUserList", userList => {
|
|
39
|
+
this._userList = userList;
|
|
40
|
+
});
|
|
41
|
+
(0, _defineProperty2.default)(this, "insertUserToList", (index, user) => {
|
|
42
|
+
this._userList.splice(index, 0, user);
|
|
43
|
+
});
|
|
44
|
+
(0, _defineProperty2.default)(this, "deleteUserList", index => {
|
|
45
|
+
this._userList.splice(index, 1);
|
|
46
|
+
});
|
|
47
|
+
(0, _defineProperty2.default)(this, "addUserToList", user => {
|
|
48
|
+
this._userList.push(user);
|
|
49
|
+
});
|
|
50
|
+
(0, _defineProperty2.default)(this, "getUserPlatform", userId => {
|
|
51
|
+
return this._platformMapByUserId.get(userId);
|
|
52
|
+
});
|
|
53
|
+
(0, _defineProperty2.default)(this, "getUserAvatar", userId => {
|
|
54
|
+
return this._avatarMapByUserId.get(userId);
|
|
55
|
+
});
|
|
56
|
+
(0, _defineProperty2.default)(this, "setUserPlatform", (userId, platform) => {
|
|
57
|
+
this._platformMapByUserId.set(userId, platform);
|
|
58
|
+
});
|
|
59
|
+
(0, _defineProperty2.default)(this, "setUserAvatar", (userId, avatar) => {
|
|
60
|
+
this._avatarMapByUserId.set(userId, avatar);
|
|
61
|
+
});
|
|
62
|
+
(0, _defineProperty2.default)(this, "deleteUserPlatform", userId => {
|
|
63
|
+
this._platformMapByUserId.delete(userId);
|
|
64
|
+
});
|
|
65
|
+
(0, _defineProperty2.default)(this, "deleteUserAvatar", userId => {
|
|
66
|
+
this._avatarMapByUserId.delete(userId);
|
|
67
|
+
});
|
|
68
|
+
(0, _defineProperty2.default)(this, "clear", () => {
|
|
69
|
+
this._userMapByUserId.clear();
|
|
70
|
+
this._userList = [];
|
|
71
|
+
this._platformMapByUserId.clear();
|
|
72
|
+
this._avatarMapByUserId.clear();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
28
75
|
get userList() {
|
|
29
76
|
return this._userList;
|
|
30
77
|
}
|
|
31
78
|
get userMapByUserId() {
|
|
32
79
|
return this._userMapByUserId;
|
|
33
80
|
}
|
|
34
|
-
setUserMapByUserId = (userId, user) => {
|
|
35
|
-
this._userMapByUserId.set(userId, user);
|
|
36
|
-
};
|
|
37
|
-
deleteUserMapByUserId = userId => {
|
|
38
|
-
this._userMapByUserId.delete(userId);
|
|
39
|
-
};
|
|
40
|
-
setUserList = userList => {
|
|
41
|
-
this._userList = userList;
|
|
42
|
-
};
|
|
43
|
-
insertUserToList = (index, user) => {
|
|
44
|
-
this._userList.splice(index, 0, user);
|
|
45
|
-
};
|
|
46
|
-
deleteUserList = index => {
|
|
47
|
-
this._userList.splice(index, 1);
|
|
48
|
-
};
|
|
49
|
-
addUserToList = user => {
|
|
50
|
-
this._userList.push(user);
|
|
51
|
-
};
|
|
52
|
-
getUserPlatform = userId => {
|
|
53
|
-
return this._platformMapByUserId.get(userId);
|
|
54
|
-
};
|
|
55
|
-
getUserAvatar = userId => {
|
|
56
|
-
return this._avatarMapByUserId.get(userId);
|
|
57
|
-
};
|
|
58
|
-
setUserPlatform = (userId, platform) => {
|
|
59
|
-
this._platformMapByUserId.set(userId, platform);
|
|
60
|
-
};
|
|
61
|
-
setUserAvatar = (userId, avatar) => {
|
|
62
|
-
this._avatarMapByUserId.set(userId, avatar);
|
|
63
|
-
};
|
|
64
|
-
deleteUserPlatform = userId => {
|
|
65
|
-
this._platformMapByUserId.delete(userId);
|
|
66
|
-
};
|
|
67
|
-
deleteUserAvatar = userId => {
|
|
68
|
-
this._avatarMapByUserId.delete(userId);
|
|
69
|
-
};
|
|
70
|
-
clear = () => {
|
|
71
|
-
this._userMapByUserId.clear();
|
|
72
|
-
this._userList = [];
|
|
73
|
-
this._platformMapByUserId.clear();
|
|
74
|
-
this._avatarMapByUserId.clear();
|
|
75
|
-
};
|
|
76
81
|
}
|
|
77
82
|
exports.FcrRoomCache = FcrRoomCache;
|
|
78
83
|
class FcrSharedCache {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
constructor() {
|
|
85
|
+
(0, _defineProperty2.default)(this, "_roomCache", new Map());
|
|
86
|
+
(0, _defineProperty2.default)(this, "getRoomCache", roomId => {
|
|
87
|
+
let roomCache = this._roomCache.get(roomId);
|
|
88
|
+
if (!roomCache) {
|
|
89
|
+
roomCache = new FcrRoomCache();
|
|
90
|
+
this._roomCache.set(roomId, roomCache);
|
|
91
|
+
}
|
|
92
|
+
return roomCache;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
88
95
|
}
|
|
89
96
|
exports.FcrSharedCache = FcrSharedCache;
|