@realsee/live 0.3.0-alpha.2 → 0.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/live/controller.d.ts +43 -0
  3. package/{lib → dist/live}/createLive.d.ts +6 -6
  4. package/dist/live/createLiveReact.d.ts +6 -0
  5. package/dist/realsee-live.cjs.development.js +52517 -0
  6. package/dist/realsee-live.cjs.development.js.map +1 -0
  7. package/dist/realsee-live.cjs.js +7 -0
  8. package/dist/realsee-live.cjs.production.js +2 -0
  9. package/dist/realsee-live.cjs.production.js.map +1 -0
  10. package/dist/realsee-live.esm.js +52506 -0
  11. package/dist/realsee-live.esm.js.map +1 -0
  12. package/dist/realsee-live.umd.development.js +52454 -0
  13. package/dist/realsee-live.umd.development.js.map +1 -0
  14. package/dist/realsee-live.umd.production.js +2 -0
  15. package/dist/realsee-live.umd.production.js.map +1 -0
  16. package/{lib/RTC → dist/rtc}/BrowserRTC.d.ts +29 -30
  17. package/{lib/RTC → dist/rtc}/BrowserRTC4Chime.d.ts +55 -53
  18. package/dist/rtc/CoreRTC.d.ts +23 -0
  19. package/{lib/RTC → dist/rtc}/VRWebViewRTC.d.ts +22 -23
  20. package/dist/rtc/index.d.ts +5 -0
  21. package/{lib/typings/Chime → dist/typings/chime}/AttendeeResponse.d.ts +5 -5
  22. package/{lib/typings/Chime → dist/typings/chime}/MeetingResponse.d.ts +12 -12
  23. package/{lib/typings/Chime → dist/typings/chime}/MeetingSessionConfigurationOptions.d.ts +16 -16
  24. package/dist/typings/chime/index.d.ts +3 -0
  25. package/dist/typings/index.d.ts +4 -0
  26. package/{lib/typings → dist/typings/live}/EventType.d.ts +90 -89
  27. package/{lib/typings → dist/typings/live}/GetVoiceSign.d.ts +17 -11
  28. package/{lib/typings → dist/typings/live}/Live.d.ts +123 -122
  29. package/{lib/typings → dist/typings/live}/LiveMsg.d.ts +119 -119
  30. package/{lib/typings → dist/typings/live}/LiveOptions.d.ts +65 -46
  31. package/{lib/typings → dist/typings/live}/RoomInfo.d.ts +13 -13
  32. package/{lib/typings → dist/typings/live}/UserInfo.d.ts +87 -87
  33. package/dist/typings/live/UserVolume.d.ts +7 -0
  34. package/{lib/typings → dist/typings/live}/WebSocket.d.ts +78 -78
  35. package/dist/typings/live/index.d.ts +9 -0
  36. package/{lib/createLiveReact.d.ts → dist/typings/react/LiveReact.d.ts} +162 -160
  37. package/dist/typings/react/RTCActionReactCallback.d.ts +2 -0
  38. package/dist/typings/react/index.d.ts +2 -0
  39. package/dist/typings/rtc/VRWebViewRTCOptions.d.ts +6 -0
  40. package/{lib/typings/RTCEventType.d.ts → dist/typings/rtc/eventType.d.ts} +29 -35
  41. package/dist/typings/rtc/index.d.ts +5 -0
  42. package/{lib/typings/RTCJoinedInfo.d.ts → dist/typings/rtc/joinedInfo.d.ts} +34 -28
  43. package/{lib/typings/RTCProtocol.d.ts → dist/typings/rtc/protocol.d.ts} +53 -42
  44. package/dist/typings/rtc/type.d.ts +8 -0
  45. package/{lib/shared-utils → dist/utils}/appendUri.d.ts +1 -1
  46. package/dist/utils/clientDetector.d.ts +4 -0
  47. package/{lib/shared-utils → dist/utils}/equal.d.ts +10 -11
  48. package/{lib/shared-utils/Subscribe.d.ts → dist/utils/subscribe.d.ts} +75 -76
  49. package/{lib/shared-utils → dist/utils}/uuid.d.ts +4 -4
  50. package/package.json +22 -36
  51. package/docs/.nojekyll +0 -1
  52. package/docs/assets/custom.css +0 -43
  53. package/docs/assets/highlight.css +0 -127
  54. package/docs/assets/icons.css +0 -1043
  55. package/docs/assets/icons.png +0 -0
  56. package/docs/assets/icons@2x.png +0 -0
  57. package/docs/assets/main.js +0 -52
  58. package/docs/assets/search.js +0 -1
  59. package/docs/assets/style.css +0 -1388
  60. package/docs/assets/widgets.png +0 -0
  61. package/docs/assets/widgets@2x.png +0 -0
  62. package/docs/classes/RTCProtocol.BrowserRTC.html +0 -60
  63. package/docs/classes/RTCProtocol.BrowserRTC4Chime.html +0 -66
  64. package/docs/classes/RTCProtocol.RTCExample.html +0 -62
  65. package/docs/classes/RTCProtocol.VRWebViewRTC.html +0 -60
  66. package/docs/classes/shared_utils.Subscribe.html +0 -56
  67. package/docs/enums/RTCProtocol.RTCJoinedInfoCodeEnum.html +0 -9
  68. package/docs/enums/RTCProtocol.RTCType.html +0 -1
  69. package/docs/enums/live.BuiltinActionType.html +0 -15
  70. package/docs/enums/live.BuiltinEventType.html +0 -7
  71. package/docs/enums/live.Command.html +0 -7
  72. package/docs/enums/live.MemUserStatus.html +0 -1
  73. package/docs/enums/live.MicroStatus.html +0 -3
  74. package/docs/enums/live.UserStatus.html +0 -9
  75. package/docs/enums/live.WebSocketCloseError.html +0 -19
  76. package/docs/enums/live.WebSocketErrorType.html +0 -1
  77. package/docs/enums/live.WebSocketState.html +0 -13
  78. package/docs/index.html +0 -382
  79. package/docs/interfaces/RTCProtocol.GetVoiceSignReturnType.html +0 -1
  80. package/docs/interfaces/RTCProtocol.RTCJoinedInfo.html +0 -1
  81. package/docs/interfaces/RTCProtocol.RTCProtocol-1.html +0 -60
  82. package/docs/interfaces/RTCProtocol.VRWebViewRTCOptions.html +0 -1
  83. package/docs/interfaces/live.Live.html +0 -119
  84. package/docs/interfaces/live.LiveOptions.html +0 -22
  85. package/docs/interfaces/live.LiveReact.html +0 -52
  86. package/docs/modules/RTCProtocol.html +0 -17
  87. package/docs/modules/live.html +0 -103
  88. package/docs/modules/shared_utils.html +0 -10
  89. package/docs/modules.html +0 -1
  90. package/lib/RTC/BrowserRTC.js +0 -169
  91. package/lib/RTC/BrowserRTC.js.map +0 -1
  92. package/lib/RTC/BrowserRTC4Chime.js +0 -299
  93. package/lib/RTC/BrowserRTC4Chime.js.map +0 -1
  94. package/lib/RTC/VRWebViewRTC.js +0 -125
  95. package/lib/RTC/VRWebViewRTC.js.map +0 -1
  96. package/lib/RTC/index.d.ts +0 -22
  97. package/lib/RTC/index.js +0 -50
  98. package/lib/RTC/index.js.map +0 -1
  99. package/lib/createLive.js +0 -590
  100. package/lib/createLive.js.map +0 -1
  101. package/lib/createLiveReact.js +0 -212
  102. package/lib/createLiveReact.js.map +0 -1
  103. package/lib/index.d.ts +0 -2
  104. package/lib/index.js +0 -8
  105. package/lib/index.js.map +0 -1
  106. package/lib/shared-utils/Subscribe.js +0 -134
  107. package/lib/shared-utils/Subscribe.js.map +0 -1
  108. package/lib/shared-utils/appendUri.js +0 -13
  109. package/lib/shared-utils/appendUri.js.map +0 -1
  110. package/lib/shared-utils/equal.js +0 -92
  111. package/lib/shared-utils/equal.js.map +0 -1
  112. package/lib/shared-utils/uuid.js +0 -17
  113. package/lib/shared-utils/uuid.js.map +0 -1
  114. package/lib/typings/Chime/AttendeeResponse.js +0 -3
  115. package/lib/typings/Chime/AttendeeResponse.js.map +0 -1
  116. package/lib/typings/Chime/MeetingResponse.js +0 -3
  117. package/lib/typings/Chime/MeetingResponse.js.map +0 -1
  118. package/lib/typings/Chime/MeetingSessionConfigurationOptions.js +0 -3
  119. package/lib/typings/Chime/MeetingSessionConfigurationOptions.js.map +0 -1
  120. package/lib/typings/EventType.js +0 -3
  121. package/lib/typings/EventType.js.map +0 -1
  122. package/lib/typings/GetVoiceSign.js +0 -3
  123. package/lib/typings/GetVoiceSign.js.map +0 -1
  124. package/lib/typings/Live.js +0 -3
  125. package/lib/typings/Live.js.map +0 -1
  126. package/lib/typings/LiveMsg.js +0 -111
  127. package/lib/typings/LiveMsg.js.map +0 -1
  128. package/lib/typings/LiveOptions.js +0 -3
  129. package/lib/typings/LiveOptions.js.map +0 -1
  130. package/lib/typings/RTCEventType.js +0 -3
  131. package/lib/typings/RTCEventType.js.map +0 -1
  132. package/lib/typings/RTCJoinedInfo.js +0 -23
  133. package/lib/typings/RTCJoinedInfo.js.map +0 -1
  134. package/lib/typings/RTCProtocol.js +0 -9
  135. package/lib/typings/RTCProtocol.js.map +0 -1
  136. package/lib/typings/RoomInfo.js +0 -3
  137. package/lib/typings/RoomInfo.js.map +0 -1
  138. package/lib/typings/UserInfo.js +0 -31
  139. package/lib/typings/UserInfo.js.map +0 -1
  140. package/lib/typings/VRWebViewRTCOptions.d.ts +0 -6
  141. package/lib/typings/VRWebViewRTCOptions.js +0 -3
  142. package/lib/typings/VRWebViewRTCOptions.js.map +0 -1
  143. package/lib/typings/WebSocket.js +0 -107
  144. package/lib/typings/WebSocket.js.map +0 -1
  145. package/umd/RTCProtocol.543610f0.js +0 -1
  146. package/umd/createLive.1ecf7dd4.js +0 -1
  147. package/umd/createLiveReact.9075a8fd.js +0 -1
package/lib/createLive.js DELETED
@@ -1,590 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLive = void 0;
4
- var tslib_1 = require("tslib");
5
- var uuid_1 = require("./shared-utils/uuid");
6
- var equal_1 = require("./shared-utils/equal");
7
- var appendUri_1 = require("./shared-utils/appendUri");
8
- var Subscribe_1 = require("./shared-utils/Subscribe");
9
- var WebSocket_1 = require("./typings/WebSocket");
10
- var LiveMsg_1 = require("./typings/LiveMsg");
11
- var RTC_1 = require("./RTC");
12
- var LiveController = /** @class */ (function () {
13
- function LiveController(options) {
14
- var _this = this;
15
- this.readyState = WebSocket_1.WebSocketState.NOTINITIALIZED;
16
- this.canSync = true;
17
- this.connecting = false;
18
- this.keyframes = {};
19
- /**
20
- * 检测 WebSocket.readyState 状态
21
- */
22
- this.checkReadyState = function (live) {
23
- do {
24
- if (!_this.webSocket) {
25
- if (_this.readyState !== WebSocket_1.WebSocketState.NOTINITIALIZED) {
26
- _this.readyState = WebSocket_1.WebSocketState.NOTINITIALIZED;
27
- live.emit('ws.readyStateUpdate', _this.readyState);
28
- }
29
- break;
30
- }
31
- var readyState = _this.webSocket.readyState;
32
- if (readyState !== _this.readyState) {
33
- _this.readyState = readyState;
34
- live.emit('ws.readyStateUpdate', _this.readyState);
35
- }
36
- } while (false);
37
- return _this.readyState;
38
- };
39
- this.dispose = function () {
40
- console.log('dispose');
41
- _this.disposeWebSocket();
42
- _this.connecting = false;
43
- if (_this.healthCheckId) {
44
- clearInterval(_this.healthCheckId);
45
- _this.healthCheckId = undefined;
46
- }
47
- };
48
- /**
49
- * 销毁WebSocket相关依赖。
50
- */
51
- this.disposeWebSocket = function () {
52
- if (!_this.webSocket)
53
- return;
54
- if (_this.onEvtOpnListener) {
55
- _this.webSocket.removeEventListener('open', _this.onEvtOpnListener);
56
- _this.onEvtOpnListener = undefined;
57
- }
58
- if (_this.onEvtMsgListener) {
59
- _this.webSocket.removeEventListener('message', _this.onEvtMsgListener);
60
- _this.onEvtMsgListener = undefined;
61
- }
62
- if (_this.onEvtErrListener) {
63
- _this.webSocket.removeEventListener('error', _this.onEvtErrListener);
64
- _this.onEvtErrListener = undefined;
65
- }
66
- if (_this.onEvtCLEListener) {
67
- _this.webSocket.removeEventListener('close', _this.onEvtCLEListener);
68
- _this.onEvtCLEListener = undefined;
69
- }
70
- _this.webSocket.close();
71
- _this.webSocket = undefined;
72
- };
73
- this.options = Object.assign({ autoConnect: true, healthCheck: 3000 }, options);
74
- }
75
- /**
76
- * 解析数据
77
- * @param msgInfo
78
- * @param live
79
- */
80
- LiveController.prototype.handleMessage = function (liveMsg, live) {
81
- var _this = this;
82
- var _a, _b, _c;
83
- var command = liveMsg.command, data = liveMsg.data, frontRequestId = liveMsg.frontRequestId, code = liveMsg.code, message = liveMsg.message;
84
- if (code !== 'SUCCESS') {
85
- return live.emit('error', liveMsg);
86
- }
87
- switch (command) {
88
- case LiveMsg_1.Command.SelfUserInfo: {
89
- var selfInfo = data;
90
- if ((0, equal_1.equal)(this.selfUserInfo, selfInfo, { deep: true }))
91
- return;
92
- this.selfUserInfo = selfInfo;
93
- live.emit('selfInfoUpdate', this.selfUserInfo, frontRequestId);
94
- break;
95
- }
96
- case LiveMsg_1.Command.RoomInfo: {
97
- var roomInfo = data;
98
- this.roomInfo = Object.assign({}, roomInfo);
99
- live.emit('readyKeyframeSync', (roomInfo.last_frame || {}));
100
- break;
101
- }
102
- case LiveMsg_1.Command.RTCInfo: {
103
- var _d = data, voiceId = _d.voice_id, type = _d.type;
104
- /* 如果已经进入语音房间,则不重复进入 --> "RTCInfo" 指令可能会下发多次 */
105
- if (live.$RTC.joined) {
106
- break;
107
- }
108
- live.$RTC.join({
109
- voiceId: voiceId,
110
- userId: ((_a = this.selfUserInfo) === null || _a === void 0 ? void 0 : _a.id) || "",
111
- roomId: (_b = this.roomInfo) === null || _b === void 0 ? void 0 : _b.info.room_code,
112
- type: type,
113
- });
114
- // 加入房间后 麦克风默认就开启了:需要发个指令。
115
- live.updateStatus(LiveMsg_1.BuiltinEventType.UserChange, LiveMsg_1.BuiltinActionType.UserMicroStatus, {
116
- status: LiveMsg_1.MicroStatus.OPEN
117
- });
118
- break;
119
- }
120
- case LiveMsg_1.Command.UserList: {
121
- var userList = data;
122
- this.userList = userList;
123
- live.emit('userListUpdate', this.userList, frontRequestId);
124
- break;
125
- }
126
- case LiveMsg_1.Command.CustomEvent: {
127
- var evtMsg = data;
128
- live.emit('broadcast', evtMsg, frontRequestId);
129
- break;
130
- }
131
- case LiveMsg_1.Command.KeyframeSync: {
132
- var remoteKeyframes_1 = data;
133
- // 此处做一层 diff,仅跟本地数据不一致的情况下才广播数据。
134
- var keyframes = Object.keys(remoteKeyframes_1)
135
- .reduce(function (accu, curr) {
136
- var _a;
137
- if ((0, equal_1.equal)(remoteKeyframes_1[curr], _this.keyframes[curr], { deep: true })) {
138
- return accu;
139
- }
140
- var params = [remoteKeyframes_1[curr], _this.keyframes[curr], frontRequestId];
141
- var evtName = curr;
142
- (_a = live.keyframes).emit.apply(_a, (0, tslib_1.__spreadArray)([evtName], params, false));
143
- _this.keyframes[curr] = remoteKeyframes_1[curr];
144
- accu[curr] = remoteKeyframes_1[curr];
145
- return accu;
146
- }, {});
147
- live.emit('keyframes', keyframes, frontRequestId);
148
- break;
149
- }
150
- case LiveMsg_1.Command.BuiltinMsg: {
151
- var builtinMsg = data;
152
- live.emit('builtinEvent', builtinMsg);
153
- if (builtinMsg.event_type === LiveMsg_1.BuiltinEventType.UserChange) {
154
- live.emit('userChange', builtinMsg);
155
- }
156
- if (builtinMsg.event_type === LiveMsg_1.BuiltinEventType.RoomChange) {
157
- live.emit('roomChange', builtinMsg);
158
- }
159
- /**
160
- * 下发指令自己操作麦克风
161
- */
162
- if (builtinMsg.event_type === LiveMsg_1.BuiltinEventType.UserChange && builtinMsg.action === LiveMsg_1.BuiltinActionType.UserMicroStatus) {
163
- live.toggleMicro(builtinMsg.data.status === LiveMsg_1.MicroStatus.OPEN);
164
- }
165
- /**
166
- * 如果下发指令退出房间,则 关闭麦克风 及 销毁 WebSocket
167
- */
168
- if (builtinMsg.event_type === LiveMsg_1.BuiltinEventType.RoomChange && builtinMsg.action === LiveMsg_1.BuiltinActionType.RoomClose) {
169
- (_c = this.options.rtc) === null || _c === void 0 ? void 0 : _c.quit();
170
- this.disposeWebSocket();
171
- }
172
- break;
173
- }
174
- case LiveMsg_1.Command.UserKickOut: {
175
- live.emit('kickOut');
176
- }
177
- }
178
- };
179
- /**
180
- * 发送数据
181
- * @param data
182
- */
183
- LiveController.prototype.sendMessage = function (data) {
184
- if (!this.webSocket)
185
- return console.warn('WebSocket has not yet been initialized!');
186
- if (!data)
187
- return console.warn('WebSocket messages is empty!');
188
- this.webSocket.send(JSON.stringify(data));
189
- };
190
- return LiveController;
191
- }());
192
- /**
193
- * 创建 `live` 实例。
194
- */
195
- function createLive(options) {
196
- var liveController = new LiveController(options);
197
- var createLiveMsg = function (command, data, toUserIds) {
198
- if (data === void 0) { data = {}; }
199
- toUserIds = toUserIds ? (Array.isArray(toUserIds) ? toUserIds : [toUserIds]) : [];
200
- if (toUserIds)
201
- data['to_user_ids'] = toUserIds;
202
- return { command: command, front_request_id: (0, uuid_1.uuid)(), data: data };
203
- };
204
- var LiveTpl = /** @class */ (function (_super) {
205
- (0, tslib_1.__extends)(LiveTpl, _super);
206
- function LiveTpl() {
207
- var _this = _super.call(this) || this;
208
- _this.keyframes = new Subscribe_1.Subscribe();
209
- if (!options.rtc) {
210
- liveController.options.rtc = new RTC_1.RTCExample();
211
- }
212
- // 默认自动连接
213
- if (liveController.options.url && liveController.options.getTicket) {
214
- _this.connect();
215
- }
216
- // 健康检查:WHY --> 在某些WebView特殊场景下 WebSocket.readyState 发生变化时不会出发error\close等事件;
217
- // 因此,开启一个定时任务监测 WebSocket.readyState 状态的更新
218
- var healthCheck = (function (healthCheck) {
219
- if (!healthCheck)
220
- return 0;
221
- if (healthCheck === true)
222
- return 3000;
223
- var duration = Number(healthCheck);
224
- if (duration > 0)
225
- return duration;
226
- return 3000;
227
- })(liveController.options.healthCheck);
228
- if (healthCheck) {
229
- liveController.healthCheckId = setInterval(function () { return liveController.checkReadyState(_this); }, healthCheck);
230
- }
231
- return _this;
232
- }
233
- Object.defineProperty(LiveTpl.prototype, "options", {
234
- get: function () {
235
- return Object.freeze(Object.assign({}, liveController.options));
236
- },
237
- enumerable: false,
238
- configurable: true
239
- });
240
- Object.defineProperty(LiveTpl.prototype, "readyState", {
241
- get: function () {
242
- liveController.checkReadyState(this);
243
- return liveController.readyState;
244
- },
245
- enumerable: false,
246
- configurable: true
247
- });
248
- Object.defineProperty(LiveTpl.prototype, "url", {
249
- get: function () {
250
- var _a;
251
- return ((_a = liveController.webSocket) === null || _a === void 0 ? void 0 : _a.url) || '';
252
- },
253
- enumerable: false,
254
- configurable: true
255
- });
256
- Object.defineProperty(LiveTpl.prototype, "selfInfo", {
257
- get: function () {
258
- return liveController.selfUserInfo;
259
- },
260
- enumerable: false,
261
- configurable: true
262
- });
263
- Object.defineProperty(LiveTpl.prototype, "userList", {
264
- get: function () {
265
- return liveController.userList || [];
266
- },
267
- enumerable: false,
268
- configurable: true
269
- });
270
- Object.defineProperty(LiveTpl.prototype, "snapshot", {
271
- get: function () {
272
- return liveController.keyframes || {};
273
- },
274
- enumerable: false,
275
- configurable: true
276
- });
277
- Object.defineProperty(LiveTpl.prototype, "$RTC", {
278
- get: function () {
279
- return liveController.options.rtc;
280
- },
281
- enumerable: false,
282
- configurable: true
283
- });
284
- LiveTpl.prototype.setSelfInfo = function (userInfo) {
285
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
286
- var error_1;
287
- return (0, tslib_1.__generator)(this, function (_a) {
288
- switch (_a.label) {
289
- case 0:
290
- if (this.readyState !== WebSocket_1.WebSocketState.OPEN) {
291
- return [2 /*return*/, new Error('The connection is not open and ready to communicate.')];
292
- }
293
- _a.label = 1;
294
- case 1:
295
- _a.trys.push([1, 3, , 4]);
296
- return [4 /*yield*/, this.updateStatus(LiveMsg_1.BuiltinEventType.UserChange, LiveMsg_1.BuiltinActionType.UserInfo, userInfo)];
297
- case 2: return [2 /*return*/, _a.sent()];
298
- case 3:
299
- error_1 = _a.sent();
300
- return [2 /*return*/, error_1];
301
- case 4: return [2 /*return*/];
302
- }
303
- });
304
- });
305
- };
306
- LiveTpl.prototype.getFramesByKey = function (key) {
307
- return liveController.keyframes[key];
308
- };
309
- LiveTpl.prototype.sendKeyframe = function (key, frame) {
310
- if (this.readyState !== WebSocket_1.WebSocketState.OPEN) {
311
- return new Error('The connection is not open and ready to communicate.');
312
- }
313
- liveController.keyframes[key] = frame;
314
- var liveMsg = createLiveMsg(LiveMsg_1.Command.KeyframeSync, this.snapshot);
315
- liveController.sendMessage(liveMsg);
316
- return true;
317
- };
318
- LiveTpl.prototype.broadcast = function (data, toUserIds, timeout) {
319
- var _this = this;
320
- if (this.readyState !== WebSocket_1.WebSocketState.OPEN) {
321
- return new Error('The connection is not open and ready to communicate.');
322
- }
323
- return new Promise(function (resolve, reject) {
324
- var customEvent = createLiveMsg(LiveMsg_1.Command.CustomEvent, data, toUserIds);
325
- var front_request_id = customEvent.front_request_id;
326
- liveController.sendMessage(customEvent);
327
- var timeoutId = timeout ? setTimeout(function () {
328
- reject(new Error('RESPONSE TIMEOUT'));
329
- _this.off('broadcast', broadcast);
330
- }, timeout) : undefined;
331
- var broadcast = function (data, frontRequestId) {
332
- if (frontRequestId !== front_request_id)
333
- return;
334
- _this.off('broadcast', broadcast);
335
- resolve(data);
336
- if (timeoutId)
337
- clearInterval(timeoutId);
338
- };
339
- _this.on('broadcast', broadcast);
340
- });
341
- };
342
- LiveTpl.prototype.updateStatus = function (evtType, atnType, status, toUserIds) {
343
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
344
- var data, liveMsg;
345
- return (0, tslib_1.__generator)(this, function (_a) {
346
- if (this.readyState !== WebSocket_1.WebSocketState.OPEN) {
347
- return [2 /*return*/, false];
348
- }
349
- data = Object.assign({ event_type: evtType, action: atnType }, { data: status });
350
- liveMsg = createLiveMsg(LiveMsg_1.Command.BuiltinMsg, data, toUserIds);
351
- liveController.sendMessage(liveMsg);
352
- return [2 /*return*/, true];
353
- });
354
- });
355
- };
356
- // 仅用于用户自己的麦克风控制
357
- LiveTpl.prototype.toggleMicro = function (microStatus) {
358
- var _a, _b;
359
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
360
- return (0, tslib_1.__generator)(this, function (_c) {
361
- switch (_c.label) {
362
- case 0:
363
- if (!((_b = (_a = this.selfInfo) === null || _a === void 0 ? void 0 : _a.permission) === null || _b === void 0 ? void 0 : _b.control_own_micro))
364
- return [2 /*return*/, false];
365
- return [4 /*yield*/, this.$RTC.toggleMicro(microStatus)];
366
- case 1:
367
- _c.sent();
368
- return [4 /*yield*/, this.updateStatus(LiveMsg_1.BuiltinEventType.UserChange, LiveMsg_1.BuiltinActionType.UserMicroStatus, {
369
- status: microStatus ? LiveMsg_1.MicroStatus.OPEN : LiveMsg_1.MicroStatus.CLOSE
370
- }, [])];
371
- case 2: return [2 /*return*/, _c.sent()];
372
- }
373
- });
374
- });
375
- };
376
- LiveTpl.prototype.forbidMicro = function (microStatus, toUserIds) {
377
- var _a, _b;
378
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
379
- return (0, tslib_1.__generator)(this, function (_c) {
380
- switch (_c.label) {
381
- case 0:
382
- if (liveController.options.canForbidUserMicro && !liveController.options.canForbidUserMicro(toUserIds)) {
383
- return [2 /*return*/, false];
384
- }
385
- if (!((_b = (_a = this.selfInfo) === null || _a === void 0 ? void 0 : _a.permission) === null || _b === void 0 ? void 0 : _b.control_other_micro)) {
386
- return [2 /*return*/, false];
387
- }
388
- return [4 /*yield*/, this.updateStatus(LiveMsg_1.BuiltinEventType.UserChange, LiveMsg_1.BuiltinActionType.UserMicroStatus, {
389
- status: microStatus
390
- }, toUserIds)];
391
- case 1: return [2 /*return*/, _c.sent()];
392
- }
393
- });
394
- });
395
- };
396
- /**
397
- * @deprecated 暂不可用
398
- */
399
- LiveTpl.prototype.forbidSync = function (sync, toUserIds) {
400
- var _a, _b;
401
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
402
- return (0, tslib_1.__generator)(this, function (_c) {
403
- switch (_c.label) {
404
- case 0:
405
- if (liveController.options.canForbidUserSync && !liveController.options.canForbidUserSync(toUserIds)) {
406
- return [2 /*return*/, false];
407
- }
408
- if (!((_b = (_a = this.selfInfo) === null || _a === void 0 ? void 0 : _a.permission) === null || _b === void 0 ? void 0 : _b.control_other_sync)) {
409
- return [2 /*return*/, false];
410
- }
411
- return [4 /*yield*/, this.updateStatus(LiveMsg_1.BuiltinEventType.UserChange, LiveMsg_1.BuiltinActionType.UserPermission, { sync_frame: sync }, toUserIds)];
412
- case 1: return [2 /*return*/, _c.sent()];
413
- }
414
- });
415
- });
416
- };
417
- LiveTpl.prototype.kick = function (toUserIds) {
418
- var _a, _b;
419
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
420
- return (0, tslib_1.__generator)(this, function (_c) {
421
- switch (_c.label) {
422
- case 0:
423
- if (liveController.options.canForbidUserKick && !liveController.options.canForbidUserKick(toUserIds)) {
424
- return [2 /*return*/, false];
425
- }
426
- if (!((_b = (_a = this.selfInfo) === null || _a === void 0 ? void 0 : _a.permission) === null || _b === void 0 ? void 0 : _b.change_other_status)) {
427
- return [2 /*return*/, false];
428
- }
429
- return [4 /*yield*/, this.updateStatus(LiveMsg_1.BuiltinEventType.UserChange, LiveMsg_1.BuiltinActionType.UserStatus, {
430
- status: 'KICK_OUT'
431
- }, toUserIds)];
432
- case 1: return [2 /*return*/, _c.sent()];
433
- }
434
- });
435
- });
436
- };
437
- LiveTpl.prototype.exit = function () {
438
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
439
- return (0, tslib_1.__generator)(this, function (_a) {
440
- switch (_a.label) {
441
- case 0:
442
- /** 退出强制关闭语音(?) */
443
- return [4 /*yield*/, this.$RTC.quit()];
444
- case 1:
445
- /** 退出强制关闭语音(?) */
446
- _a.sent();
447
- return [4 /*yield*/, this.updateStatus(LiveMsg_1.BuiltinEventType.RoomChange, LiveMsg_1.BuiltinActionType.RoomClose, {})];
448
- case 2: return [2 /*return*/, _a.sent()];
449
- }
450
- });
451
- });
452
- };
453
- LiveTpl.prototype.connect = function (options) {
454
- if (options === void 0) { options = {}; }
455
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
456
- var microAuth, error, error, force, error, error, url, _a, _b, _c;
457
- var _d;
458
- var _this = this;
459
- return (0, tslib_1.__generator)(this, function (_e) {
460
- switch (_e.label) {
461
- case 0: return [4 /*yield*/, this.$RTC.detectMicro()];
462
- case 1:
463
- microAuth = _e.sent();
464
- if (!microAuth) {
465
- error = new Error('系统监测麦克风未授权~');
466
- this.emit('ws.error', { type: WebSocket_1.WebSocketErrorType.MicroAuth, error: error });
467
- return [2 /*return*/, error];
468
- }
469
- // WebSocket 正在连接中,规避重复连接
470
- if (liveController.connecting) {
471
- error = new Error('WebSocket 正在连接中,请勿重复连接 ...');
472
- this.emit('ws.error', { type: WebSocket_1.WebSocketErrorType.DuplicateConnect, error: error });
473
- return [2 /*return*/, error];
474
- }
475
- force = options.force;
476
- if (!force) {
477
- if (this.readyState === WebSocket_1.WebSocketState.CONNECTING || this.readyState === WebSocket_1.WebSocketState.OPEN) {
478
- return [2 /*return*/, true];
479
- }
480
- }
481
- // WebSocket URL 逻辑
482
- if (options.url) {
483
- liveController.options.url = options.url;
484
- }
485
- if (options.getTicket) {
486
- liveController.options.getTicket = options.getTicket;
487
- }
488
- if (!liveController.options.url || !liveController.options.url.startsWith('ws')) {
489
- error = new Error("WebSocket URL \u672A\u914D\u7F6E\u6216\u683C\u5F0F\u4E0D\u5408\u6CD5\uFF1A\"".concat(liveController.options.url, "\""));
490
- this.emit('ws.error', { type: WebSocket_1.WebSocketErrorType.IllegalURL, error: error });
491
- return [2 /*return*/, error];
492
- }
493
- if (!liveController.options.getTicket) {
494
- error = new Error("getTicket() \u672A\u914D\u7F6E!");
495
- this.emit('ws.error', { type: WebSocket_1.WebSocketErrorType.IllegalArgs, error: error });
496
- return [2 /*return*/, error];
497
- }
498
- // 连接锁
499
- liveController.connecting = true;
500
- // 连接前销毁之前绑定的事件
501
- liveController.disposeWebSocket();
502
- this.emit('ws.beforeConnect');
503
- if (!(force || options.url || !this.url)) return [3 /*break*/, 3];
504
- _b = appendUri_1.appendUri;
505
- _c = [liveController.options.url];
506
- _d = {};
507
- return [4 /*yield*/, liveController.options.getTicket()];
508
- case 2:
509
- _a = _b.apply(void 0, _c.concat([(_d.ticket = _e.sent(),
510
- _d.force = Number(!!force),
511
- _d)]));
512
- return [3 /*break*/, 4];
513
- case 3:
514
- _a = this.url;
515
- _e.label = 4;
516
- case 4:
517
- url = _a;
518
- liveController.webSocket = new WebSocket(url);
519
- liveController.onEvtOpnListener = function () {
520
- liveController.checkReadyState(_this);
521
- _this.emit('ws.afterConnect');
522
- };
523
- liveController.onEvtMsgListener = function (evt) {
524
- liveController.checkReadyState(_this);
525
- try {
526
- var liveMsg = (0, LiveMsg_1.parseLiveMsg)(evt.data);
527
- if (liveMsg === false)
528
- return;
529
- liveController.handleMessage(liveMsg, _this);
530
- }
531
- catch (error) {
532
- // 未知错误
533
- _this.emit('ws.error', { type: WebSocket_1.WebSocketErrorType.Unknown, error: error, target: evt });
534
- }
535
- };
536
- liveController.onEvtErrListener = function (evt) {
537
- live.emit('ws.error', { type: WebSocket_1.WebSocketErrorType.Error, target: evt });
538
- liveController.checkReadyState(_this);
539
- };
540
- liveController.onEvtCLEListener = function (evt) {
541
- liveController.checkReadyState(_this);
542
- var code = Number(evt.code);
543
- if (code === 1000)
544
- return;
545
- // 异常退出不一定会触发'error'事件,根据 evt.code 一些类型的退出也算是 error 行为
546
- var errMsg = (0, WebSocket_1.parseWSClsErr)(code);
547
- live.emit('ws.error', { target: evt, type: WebSocket_1.WebSocketErrorType.Close, closeError: errMsg });
548
- };
549
- liveController.webSocket.addEventListener('open', liveController.onEvtOpnListener);
550
- liveController.webSocket.addEventListener('message', liveController.onEvtMsgListener);
551
- liveController.webSocket.addEventListener('error', liveController.onEvtErrListener);
552
- liveController.webSocket.addEventListener('close', liveController.onEvtCLEListener);
553
- return [4 /*yield*/, new Promise(function (resolve, reject) {
554
- var success = function () {
555
- resolve(true);
556
- liveController.connecting = false;
557
- _this.off('ws.error', fail);
558
- };
559
- var fail = function (error) {
560
- reject(error.error ? error.error : new Error('WebSocket connection failed!'));
561
- liveController.connecting = false;
562
- _this.off('ws.afterConnect', success);
563
- };
564
- _this.once('ws.afterConnect', success);
565
- _this.once('ws.error', fail);
566
- })];
567
- case 5: return [2 /*return*/, _e.sent()];
568
- }
569
- });
570
- });
571
- };
572
- LiveTpl.prototype.revoke = function () {
573
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
574
- return (0, tslib_1.__generator)(this, function (_a) {
575
- return [2 /*return*/, true];
576
- });
577
- });
578
- };
579
- return LiveTpl;
580
- }(Subscribe_1.Subscribe));
581
- var live = new LiveTpl();
582
- // 如果是调试环境则将内部状态暴露出来
583
- if (options.__debug__) {
584
- Object.assign(live, { __controller__: liveController });
585
- Object.assign(window, { $live: live });
586
- }
587
- return live;
588
- }
589
- exports.createLive = createLive;
590
- //# sourceMappingURL=createLive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createLive.js","sourceRoot":"","sources":["../resources/createLive.ts"],"names":[],"mappings":"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"}