@reactoo/watchtogether-sdk-js 2.5.66 → 2.5.69

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reactoo/watchtogether-sdk-js",
3
- "version": "2.5.66",
3
+ "version": "2.5.69",
4
4
  "description": "Javascript SDK for Reactoo",
5
5
  "main": "src/index.js",
6
6
  "unpkg": "dist/watchtogether-sdk.min.js",
@@ -1,14 +1,26 @@
1
1
  'use strict';
2
2
 
3
3
  export default {
4
- getUserStream({hasVideo, isHd, aDeviceId, vDeviceId, lfps, autoGainControl = false, muteAudio = false, muteVideo = false} = {}) {
4
+ getUserStream({
5
+ hasVideo,
6
+ isHd,
7
+ aDeviceId,
8
+ vDeviceId,
9
+ lfps,
10
+ autoGainControl = false,
11
+ echoCancellation = true,
12
+ noiseSuppression = true,
13
+ channelCount = 1,
14
+ muteAudio = false,
15
+ muteVideo = false} = {}
16
+ ) {
5
17
  let fullConstraints = {
6
18
  audio: {
7
19
  ...(aDeviceId && {deviceId: {exact:aDeviceId}}),
8
20
  autoGainControl,
9
- echoCancellation: true,
10
- noiseSuppression: true,
11
- channelCount: 1
21
+ echoCancellation,
22
+ noiseSuppression,
23
+ channelCount
12
24
  },
13
25
  video: {
14
26
  ...(vDeviceId && {deviceId: {exact:vDeviceId}}),
@@ -24,12 +24,13 @@ const syncModule = function ({room, emitter} = {}) {
24
24
  let syncNextWaitTime = null;
25
25
  let stopFlag = false;
26
26
  let isSyncing = false;
27
-
27
+ let safeSpace = 2;
28
28
  let playbackRate = 2;
29
29
  let isPlaying = false;
30
30
  let isPreloading = true;
31
31
  let isProgrammaticallySeeked = false;
32
-
32
+
33
+
33
34
  const startSyncLoop = () => {
34
35
 
35
36
  if(!isConnected()) {
@@ -68,6 +69,21 @@ const syncModule = function ({room, emitter} = {}) {
68
69
  };
69
70
 
70
71
  loop();
72
+
73
+ //TODO: push sync
74
+ // const loop2 = () => {
75
+ // seekForward()
76
+ // .then(() => {
77
+ // setNextWaitTime(false);
78
+ // })
79
+ // .catch((e) => {
80
+ // setNextWaitTime(true);
81
+ // console.log('Sync failed', e);
82
+ // });
83
+ // syncWaitId = setTimeout(loop2, syncNextWaitTime);
84
+ // };
85
+ //
86
+ // loop2();
71
87
 
72
88
  };
73
89
 
@@ -234,6 +250,37 @@ const syncModule = function ({room, emitter} = {}) {
234
250
  }
235
251
  };
236
252
 
253
+ const seekForward = () => {
254
+ return new Promise((resolve, reject) => {
255
+ let diff = _playerInterface.buffered.end(0) - _playerInterface.currentTime;
256
+ let diff_target = diff - safeSpace;
257
+
258
+ let __ = () => {
259
+ _playerInterface.setPlaybackRate(1);
260
+ isProgrammaticallySeeked = false;
261
+ isSyncing = false;
262
+ reject('Stalled');
263
+ };
264
+
265
+ console.log('Users stream is behind behind live by:',diff);
266
+ if(diff_target > 0) {
267
+ _emitter.once('stalled', __);
268
+ setExactTimeout(() => {
269
+ _playerInterface.setPlaybackRate(1);
270
+ isProgrammaticallySeeked = false;
271
+ isSyncing = false;
272
+ _emitter.off('stalled', __);
273
+ resolve();
274
+ }, (diff_target * 1000) / playbackRate, 20);
275
+ isProgrammaticallySeeked = true;
276
+ isSyncing = true;
277
+ _playerInterface.setPlaybackRate(playbackRate);
278
+ } else {
279
+ resolve();
280
+ }
281
+ });
282
+ };
283
+
237
284
  const seekBy = (time) => {
238
285
  return new Promise((resolve, reject) => {
239
286
  if(_playerInterface.currentTime !== time) {
@@ -163,7 +163,7 @@ class Iot {
163
163
  if(payload.display) {
164
164
  const decodedDisplay = decodeJanusDisplay(payload.display);
165
165
  if(decodedDisplay.userId) {
166
- payload = {...payload, userId: decodedDisplay.userId, role: decodedDisplay.role};
166
+ payload = {...payload, userId: decodedDisplay.userId, role: decodedDisplay.role, start: decodedDisplay.start};
167
167
  }
168
168
  }
169
169
 
@@ -303,7 +303,7 @@ class RoomSession {
303
303
  case 'participant':
304
304
  return 'removeRemoteParticipant';
305
305
  case 'talkback':
306
- return 'addRemoteTalkback';
306
+ return 'removeRemoteTalkback';
307
307
  case 'monitor':
308
308
  return 'removeRemoteTalkback';
309
309
  case 'observer':