fcr-core 3.10.5 → 3.10.6
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 +108 -102
- package/lib/imports.js +0 -1
- package/lib/index.d.ts +1 -1
- package/lib/media-control/desktop.js +13 -22
- package/lib/media-control/mobile.js +13 -22
- package/lib/monitor-control/index.js +7 -17
- package/lib/peer-session/index.js +121 -120
- package/lib/plugins/chat/chatroom.js +96 -119
- package/lib/plugins/chat/connector.js +48 -69
- package/lib/remote-control/index.js +216 -194
- package/lib/room-control/ability-control/index.js +10 -20
- package/lib/room-control/application-control/index.js +75 -82
- package/lib/room-control/group-control/index.js +30 -31
- package/lib/room-control/helpers/board-init-info-helper.js +10 -16
- package/lib/room-control/helpers/validation-helper.js +1 -1
- package/lib/room-control/index.js +51 -70
- package/lib/room-control/infinity-room-control/index.js +19 -27
- package/lib/room-control/interpreter-control/index.js +65 -77
- package/lib/room-control/interpreter-control/room.js +4 -6
- package/lib/room-control/join-before-host-waitingroom-control/index.js +4 -6
- package/lib/room-control/mainroom-control/index.js +25 -37
- package/lib/room-control/privilege-control/helper.js +13 -28
- package/lib/room-control/privilege-control/index.js +28 -36
- package/lib/room-control/room-connector-control/index.js +47 -52
- package/lib/room-control/room-control-factory.js +12 -10
- package/lib/room-control/room-session/index.js +74 -77
- package/lib/room-control/shared-cache.js +56 -63
- package/lib/room-control/sharing-control/index.js +57 -65
- package/lib/room-control/stream-control/index.js +238 -203
- package/lib/room-control/stream-control/type.d.ts +11 -1
- package/lib/room-control/stt-control/de-compress-gzip.js +0 -10
- package/lib/room-control/stt-control/index.js +86 -93
- package/lib/room-control/user-control/index.js +155 -162
- package/lib/room-control/waitingroom-control/index.js +9 -18
- package/lib/room-control/whiteboard-control/utils.js +2 -4
- package/lib/room-control/whiteboard-control-v1/board-subwindow.js +1 -2
- package/lib/room-control/whiteboard-control-v1/board-window.js +103 -120
- package/lib/room-control/whiteboard-control-v1/factory.js +4 -7
- package/lib/room-control/whiteboard-control-v1/index.js +67 -80
- package/lib/room-control/whiteboard-control-v1/mount-manager.js +2 -4
- package/lib/room-control/whiteboard-control-v1/utils.js +14 -17
- package/lib/room-control/whiteboard-control-v2/annotation-control/control.js +10 -14
- package/lib/room-control/whiteboard-control-v2/annotation-control/factory.js +8 -17
- package/lib/room-control/whiteboard-control-v2/base/index.js +53 -61
- package/lib/room-control/whiteboard-control-v2/base/main-window.js +30 -39
- package/lib/room-control/whiteboard-control-v2/utils.js +10 -10
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.js +33 -45
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.js +11 -27
- package/lib/room-control/widget-control/index.js +33 -43
- package/lib/room-router/index.js +58 -66
- package/lib/service/api.js +548 -446
- package/lib/struct.js +2 -5
- package/lib/type.d.ts +1 -1
- package/lib/utilities/abortable-retry.js +0 -3
- package/lib/utilities/collection.js +11 -15
- package/lib/utilities/error-helpers.js +27 -34
- package/lib/utilities/error.js +3 -4
- package/lib/utilities/join-helper.js +31 -37
- package/lib/utilities/logger.js +5 -8
- package/lib/utilities/parameters.js +10 -21
- package/lib/utilities/retry-helpers.js +0 -1
- package/lib/utilities/stream.js +11 -16
- package/lib/utilities/user.js +3 -4
- package/lib/utilities/validate-params.js +1 -1
- package/lib/utilities/video-encoder-config.js +5 -10
- package/lib-es/engine/index.js +108 -102
- package/lib-es/media-control/desktop.js +13 -22
- package/lib-es/media-control/mobile.js +13 -22
- package/lib-es/monitor-control/index.js +7 -16
- package/lib-es/peer-session/index.js +121 -120
- package/lib-es/plugins/chat/chatroom.js +95 -118
- package/lib-es/plugins/chat/connector.js +47 -67
- package/lib-es/remote-control/index.js +216 -194
- package/lib-es/room-control/ability-control/index.js +10 -19
- package/lib-es/room-control/application-control/index.js +75 -81
- package/lib-es/room-control/group-control/index.js +30 -31
- package/lib-es/room-control/helpers/board-init-info-helper.js +10 -15
- package/lib-es/room-control/helpers/validation-helper.js +1 -1
- package/lib-es/room-control/index.js +51 -69
- package/lib-es/room-control/infinity-room-control/index.js +19 -26
- package/lib-es/room-control/interpreter-control/index.js +65 -77
- package/lib-es/room-control/interpreter-control/room.js +4 -5
- package/lib-es/room-control/join-before-host-waitingroom-control/index.js +4 -5
- package/lib-es/room-control/mainroom-control/index.js +25 -37
- package/lib-es/room-control/privilege-control/helper.js +13 -27
- package/lib-es/room-control/privilege-control/index.js +28 -36
- package/lib-es/room-control/room-connector-control/index.js +47 -52
- package/lib-es/room-control/room-control-factory.js +12 -10
- package/lib-es/room-control/room-session/index.js +74 -77
- package/lib-es/room-control/shared-cache.js +56 -62
- package/lib-es/room-control/sharing-control/index.js +57 -64
- package/lib-es/room-control/stream-control/index.js +240 -205
- package/lib-es/room-control/stt-control/de-compress-gzip.js +0 -10
- package/lib-es/room-control/stt-control/index.js +86 -93
- package/lib-es/room-control/user-control/index.js +155 -162
- package/lib-es/room-control/waitingroom-control/index.js +9 -18
- package/lib-es/room-control/whiteboard-control/utils.js +2 -4
- package/lib-es/room-control/whiteboard-control-v1/board-subwindow.js +1 -2
- package/lib-es/room-control/whiteboard-control-v1/board-window.js +103 -120
- package/lib-es/room-control/whiteboard-control-v1/factory.js +4 -6
- package/lib-es/room-control/whiteboard-control-v1/index.js +67 -80
- package/lib-es/room-control/whiteboard-control-v1/mount-manager.js +2 -3
- package/lib-es/room-control/whiteboard-control-v1/utils.js +14 -17
- package/lib-es/room-control/whiteboard-control-v2/annotation-control/control.js +10 -13
- package/lib-es/room-control/whiteboard-control-v2/annotation-control/factory.js +8 -16
- package/lib-es/room-control/whiteboard-control-v2/base/index.js +53 -60
- package/lib-es/room-control/whiteboard-control-v2/base/main-window.js +30 -39
- package/lib-es/room-control/whiteboard-control-v2/utils.js +10 -10
- package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/control.js +33 -45
- package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/factory.js +11 -26
- package/lib-es/room-control/widget-control/index.js +33 -42
- package/lib-es/room-router/index.js +58 -66
- package/lib-es/service/api.js +548 -445
- package/lib-es/struct.js +2 -4
- package/lib-es/utilities/abortable-retry.js +0 -3
- package/lib-es/utilities/collection.js +11 -14
- package/lib-es/utilities/error-helpers.js +26 -33
- package/lib-es/utilities/error.js +3 -4
- package/lib-es/utilities/join-helper.js +29 -36
- package/lib-es/utilities/logger.js +5 -7
- package/lib-es/utilities/parameters.js +10 -21
- package/lib-es/utilities/retry-helpers.js +0 -1
- package/lib-es/utilities/stream.js +11 -15
- package/lib-es/utilities/user.js +3 -4
- package/lib-es/utilities/validate-params.js +1 -1
- package/lib-es/utilities/video-encoder-config.js +5 -10
- package/package.json +4 -4
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.symbol.description.js");
|
|
4
|
-
require("core-js/modules/es.error.cause.js");
|
|
5
3
|
require("core-js/modules/es.array.push.js");
|
|
6
4
|
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");
|
|
9
5
|
require("core-js/modules/esnext.symbol.metadata.js");
|
|
10
6
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
11
7
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -29,9 +25,6 @@ require("core-js/modules/esnext.map.merge.js");
|
|
|
29
25
|
require("core-js/modules/esnext.map.reduce.js");
|
|
30
26
|
require("core-js/modules/esnext.map.some.js");
|
|
31
27
|
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"));
|
|
35
28
|
var _imports = require("../../imports");
|
|
36
29
|
var _schema = require("../../schema");
|
|
37
30
|
var _type = require("../../type");
|
|
@@ -39,37 +32,38 @@ var _error = require("../../utilities/error");
|
|
|
39
32
|
var _logger = require("../../utilities/logger");
|
|
40
33
|
var _validateParams = _interopRequireDefault(require("../../utilities/validate-params"));
|
|
41
34
|
var _helpers = require("../helpers");
|
|
42
|
-
|
|
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; }
|
|
35
|
+
let _initProto, _startRoomSessionDecs, _stopRoomSessionDecs, _acceptRoomSessionDecs, _rejectRoomSessionDecs;
|
|
46
36
|
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)]; } }; }
|
|
47
37
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
48
38
|
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); }
|
|
49
39
|
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; }
|
|
50
40
|
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");
|
|
52
41
|
/**
|
|
53
42
|
* @internal
|
|
54
43
|
*/
|
|
55
44
|
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
|
+
};
|
|
56
66
|
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
|
-
});
|
|
73
67
|
this._roomControl = _roomControl;
|
|
74
68
|
this._api = _api;
|
|
75
69
|
this._userId = _userId;
|
|
@@ -81,30 +75,34 @@ class FcrRoomSessionControlImpl {
|
|
|
81
75
|
async startRoomSession(params, targetRoles) {
|
|
82
76
|
try {
|
|
83
77
|
const session = {
|
|
84
|
-
sessionId: (0, _imports.md5)(
|
|
78
|
+
sessionId: (0, _imports.md5)(`${this._userId}${Date.now()}`),
|
|
85
79
|
sessionKey: params.sessionKey,
|
|
86
80
|
payload: params.payload,
|
|
87
81
|
duration: params.duration,
|
|
88
82
|
sender: this._userId,
|
|
89
83
|
targetRoles: targetRoles ? targetRoles.map(role => _type.FcrPrivilegeUserRoleToStringMap[role]) : undefined
|
|
90
84
|
};
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
85
|
+
const {
|
|
86
|
+
data: {
|
|
87
|
+
interval
|
|
88
|
+
}
|
|
89
|
+
} = await this._api.updateRoomSession({
|
|
90
|
+
userId: this._userId,
|
|
91
|
+
sessionId: session.sessionId,
|
|
92
|
+
sessionKey: session.sessionKey,
|
|
93
|
+
duration: session.duration,
|
|
94
|
+
payload: session.payload,
|
|
95
|
+
targetId: this._roomControl.getRoomInfo().roomId,
|
|
96
|
+
targetRoles: session.targetRoles
|
|
97
|
+
});
|
|
101
98
|
const nextTs = Date.now() + interval;
|
|
102
|
-
this._scheduleMap.set(session.sessionId,
|
|
99
|
+
this._scheduleMap.set(session.sessionId, {
|
|
100
|
+
...params,
|
|
103
101
|
targetRoles: session.targetRoles,
|
|
104
102
|
nextTs,
|
|
105
103
|
startTs: Date.now()
|
|
106
|
-
})
|
|
107
|
-
this.logger.info(
|
|
104
|
+
});
|
|
105
|
+
this.logger.info(`[RoomSession] put into session schedule: ${session.sessionId}, next ts: ${nextTs}, remain: ${nextTs - Date.now()}ms`);
|
|
108
106
|
return session.sessionId;
|
|
109
107
|
} catch (e) {
|
|
110
108
|
throw (0, _error.generateFcrCoreServerError)(_imports.DetailErrorCode.LOCAL_HTTP_REQUEST_FAILED, 'start room session failed');
|
|
@@ -193,33 +191,37 @@ class FcrRoomSessionControlImpl {
|
|
|
193
191
|
interval: 0
|
|
194
192
|
};
|
|
195
193
|
if (this._isSessionExpired(session)) {
|
|
196
|
-
this.logger.info(
|
|
194
|
+
this.logger.info(`room session expired, removed: ${session.sessionId}`);
|
|
197
195
|
this._scheduleMap.delete(session.sessionId);
|
|
198
196
|
continue;
|
|
199
197
|
}
|
|
200
198
|
// check timeout
|
|
201
199
|
if (params.nextTs < Date.now()) {
|
|
202
|
-
this.logger.info(
|
|
200
|
+
this.logger.info(`ping session: ${session.sessionId}`);
|
|
203
201
|
try {
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
202
|
+
const {
|
|
203
|
+
data: {
|
|
204
|
+
interval
|
|
205
|
+
}
|
|
206
|
+
} = await this._api.updateRoomSession({
|
|
207
|
+
userId: this._userId,
|
|
208
|
+
sessionId: session.sessionId,
|
|
209
|
+
sessionKey: session.sessionKey,
|
|
210
|
+
duration: params.duration,
|
|
211
|
+
payload: session.payload,
|
|
212
|
+
targetRoles: session.targetRoles,
|
|
213
|
+
targetId: this._roomControl.getRoomInfo().roomId
|
|
214
|
+
});
|
|
214
215
|
const nextTs = Date.now() + interval;
|
|
215
216
|
if (this._scheduleMap.has(session.sessionId)) {
|
|
216
|
-
this._scheduleMap.set(session.sessionId,
|
|
217
|
+
this._scheduleMap.set(session.sessionId, {
|
|
218
|
+
...params,
|
|
217
219
|
nextTs
|
|
218
|
-
})
|
|
219
|
-
this.logger.info(
|
|
220
|
+
});
|
|
221
|
+
this.logger.info(`[RoomSession] refresh session schedule: ${session.sessionId}, next ts: ${nextTs}`);
|
|
220
222
|
}
|
|
221
223
|
} catch (e) {
|
|
222
|
-
this.logger.error(
|
|
224
|
+
this.logger.error(`ping session failed: ${e}`);
|
|
223
225
|
}
|
|
224
226
|
}
|
|
225
227
|
}
|
|
@@ -228,16 +230,18 @@ class FcrRoomSessionControlImpl {
|
|
|
228
230
|
const session = this._receivedMap.get(key);
|
|
229
231
|
if (this._isSessionExpired(session)) {
|
|
230
232
|
this._receivedMap.delete(key);
|
|
231
|
-
this.logger.info(
|
|
233
|
+
this.logger.info(`delete session callback: ${key}`);
|
|
232
234
|
}
|
|
233
235
|
}
|
|
234
236
|
}
|
|
235
237
|
|
|
236
238
|
//@internal
|
|
237
239
|
async _handleRoomMessage(roomId, message) {
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
240
|
+
const {
|
|
241
|
+
senderId,
|
|
242
|
+
payload,
|
|
243
|
+
cmd
|
|
244
|
+
} = message;
|
|
241
245
|
const data = payload;
|
|
242
246
|
if (cmd === _helpers.ROOM_MESSAGE_COMMANDS.ROOM_SESSION_REQUEST) {
|
|
243
247
|
const session = {
|
|
@@ -255,7 +259,7 @@ class FcrRoomSessionControlImpl {
|
|
|
255
259
|
}
|
|
256
260
|
if (!this._isSessionExpired(session)) {
|
|
257
261
|
if (!this._receivedMap.has(session.sessionId)) {
|
|
258
|
-
this.logger.info(
|
|
262
|
+
this.logger.info(`[RoomSession] received room session request ${JSON.stringify(session)}`);
|
|
259
263
|
this._observable.notifyObservers('onRoomSessionReceived', roomId, session);
|
|
260
264
|
}
|
|
261
265
|
this._receivedMap.set(session.sessionId, session);
|
|
@@ -265,7 +269,6 @@ class FcrRoomSessionControlImpl {
|
|
|
265
269
|
// 但是点对点消息实际上触发的是 AgoraRteEngine.onPeerMessageReceived 事件. 所以这里并不会收到 cmd === ROOM_SESSION_ACCEPT 和 ROOM_SESSION_REJECT 的消息.
|
|
266
270
|
if (data.action === 1) {
|
|
267
271
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
268
|
-
var _session$payload, _ref2, _data$payload;
|
|
269
272
|
const session = this._scheduleMap.get(data.sessionUuid);
|
|
270
273
|
const sessionResponse = {
|
|
271
274
|
sessionId: data.sessionUuid,
|
|
@@ -273,16 +276,15 @@ class FcrRoomSessionControlImpl {
|
|
|
273
276
|
responderId: senderId,
|
|
274
277
|
// FIXME: session may be lost when the client refreshes
|
|
275
278
|
// get payload from original session
|
|
276
|
-
payload:
|
|
277
|
-
cause:
|
|
279
|
+
payload: session.payload ?? {},
|
|
280
|
+
cause: data.payload?.cause ?? {}
|
|
278
281
|
};
|
|
279
|
-
this.logger.info(
|
|
282
|
+
this.logger.info(`[RoomSession] received room session accepted ${JSON.stringify(sessionResponse)}`);
|
|
280
283
|
this._scheduleMap.delete(data.sessionUuid);
|
|
281
284
|
this._observable.notifyObservers('onRoomSessionAccepted', roomId, sessionResponse);
|
|
282
285
|
}
|
|
283
286
|
} else if (data.action === 2) {
|
|
284
287
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
285
|
-
var _session$payload2, _ref3, _data$payload2;
|
|
286
288
|
const session = this._scheduleMap.get(data.sessionUuid);
|
|
287
289
|
const sessionResponse = {
|
|
288
290
|
sessionId: data.sessionUuid,
|
|
@@ -290,10 +292,10 @@ class FcrRoomSessionControlImpl {
|
|
|
290
292
|
responderId: senderId,
|
|
291
293
|
// FIXME: session may be lost when the client refreshes
|
|
292
294
|
// get payload from original session
|
|
293
|
-
payload:
|
|
294
|
-
cause:
|
|
295
|
+
payload: session.payload ?? {},
|
|
296
|
+
cause: data.payload?.cause ?? {}
|
|
295
297
|
};
|
|
296
|
-
this.logger.info(
|
|
298
|
+
this.logger.info(`[RoomSession] received room session rejected ${JSON.stringify(sessionResponse)}`);
|
|
297
299
|
if (this._scheduleMap.has(data.sessionUuid)) {
|
|
298
300
|
this._scheduleMap.delete(data.sessionUuid);
|
|
299
301
|
this._observable.notifyObservers('onRoomSessionRejected', roomId, sessionResponse);
|
|
@@ -311,9 +313,4 @@ class FcrRoomSessionControlImpl {
|
|
|
311
313
|
this.addObserver((0, _logger.generateLogObserver)(this.logger, [['onRoomSessionAccepted', ['roomId', 'response']], ['onRoomSessionRejected', ['roomId', 'response']], ['onRoomSessionReceived', ['roomId', 'session']]]));
|
|
312
314
|
}
|
|
313
315
|
}
|
|
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;
|
|
316
|
+
exports.FcrRoomSessionControlImpl = FcrRoomSessionControlImpl;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
@@ -20,77 +19,71 @@ require("core-js/modules/esnext.map.merge.js");
|
|
|
20
19
|
require("core-js/modules/esnext.map.reduce.js");
|
|
21
20
|
require("core-js/modules/esnext.map.some.js");
|
|
22
21
|
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"));
|
|
25
22
|
class FcrRoomCache {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
}
|
|
23
|
+
_platformMapByUserId = new Map();
|
|
24
|
+
_avatarMapByUserId = new Map();
|
|
25
|
+
_userMapByUserId = new Map();
|
|
26
|
+
//@internal
|
|
27
|
+
_userList = [];
|
|
75
28
|
get userList() {
|
|
76
29
|
return this._userList;
|
|
77
30
|
}
|
|
78
31
|
get userMapByUserId() {
|
|
79
32
|
return this._userMapByUserId;
|
|
80
33
|
}
|
|
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
|
+
};
|
|
81
76
|
}
|
|
82
77
|
exports.FcrRoomCache = FcrRoomCache;
|
|
83
78
|
class FcrSharedCache {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
});
|
|
94
|
-
}
|
|
79
|
+
_roomCache = new Map();
|
|
80
|
+
getRoomCache = roomId => {
|
|
81
|
+
let roomCache = this._roomCache.get(roomId);
|
|
82
|
+
if (!roomCache) {
|
|
83
|
+
roomCache = new FcrRoomCache();
|
|
84
|
+
this._roomCache.set(roomId, roomCache);
|
|
85
|
+
}
|
|
86
|
+
return roomCache;
|
|
87
|
+
};
|
|
95
88
|
}
|
|
96
89
|
exports.FcrSharedCache = FcrSharedCache;
|