fcr-core 3.10.1-rc.2 → 3.10.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.
@@ -326,6 +326,8 @@ class FcrPeerSessionControlImpl {
326
326
  data,
327
327
  cmd
328
328
  } = payload;
329
+ const logContext = `cmd=${cmd}, sessionKey=${data.sessionKey}, sessionId=${data.sessionUuid}, ` + `action=${String(data.action)}, senderId=${senderId}, keepAlive=${!!data.keepAlive}`;
330
+ this.logger.info(`[PeerSession] received peer message: ${logContext}, payload=${JSON.stringify(data.payload ?? {})}`);
329
331
  if (cmd === '1001') {
330
332
  const session = {
331
333
  sessionId: data.sessionUuid,
@@ -358,7 +360,10 @@ class FcrPeerSessionControlImpl {
358
360
  ...params,
359
361
  action: 1
360
362
  });
363
+ this.logger.info(`[PeerSession] forward peer session accepted to observers: ${logContext}`);
361
364
  this._observable.notifyObservers('onPeerSessionAccepted', sessionResponse);
365
+ } else {
366
+ this.logger.info(`[PeerSession] ignore peer session accepted without local schedule: ${logContext}`);
362
367
  }
363
368
  if (this._receivedMap.has(session.sessionId)) {
364
369
  this._receivedMap.set(session.sessionId, {
@@ -371,8 +376,10 @@ class FcrPeerSessionControlImpl {
371
376
  return;
372
377
  } else {
373
378
  if (!this._receivedMap.has(session.sessionId)) {
374
- this.logger.info(`[PeerSession] received peer session request ${JSON.stringify(session)}`);
379
+ this.logger.info(`[PeerSession] forward peer session request to observers: ${logContext}`);
375
380
  this._observable.notifyObservers('onPeerSessionReceived', session);
381
+ } else {
382
+ this.logger.info(`[PeerSession] peer session request already cached, update cache only: ${logContext}`);
376
383
  }
377
384
  this._receivedMap.set(session.sessionId, {
378
385
  ...session,
@@ -381,6 +388,8 @@ class FcrPeerSessionControlImpl {
381
388
  action: 0
382
389
  });
383
390
  }
391
+ } else {
392
+ this.logger.info(`[PeerSession] ignore expired peer session message: ${logContext}, ` + `timestamp=${session.timestamp}, duration=${session.duration}`);
384
393
  }
385
394
  } else if (cmd === '1002') {
386
395
  if (data.action === 1) {
@@ -396,9 +405,11 @@ class FcrPeerSessionControlImpl {
396
405
  cause: data.payload?.cause ?? {},
397
406
  keepAlive: !!data.keepAlive
398
407
  };
399
- this.logger.info(`[PeerSession] received peer session accepted ${JSON.stringify(sessionResponse)}`);
400
408
  this._scheduleMap.delete(data.sessionUuid);
409
+ this.logger.info(`[PeerSession] forward peer session accepted to observers: ${logContext}`);
401
410
  this._observable.notifyObservers('onPeerSessionAccepted', sessionResponse);
411
+ } else {
412
+ this.logger.info(`[PeerSession] ignore peer session accepted without local schedule: ${logContext}`);
402
413
  }
403
414
  } else if (data.action === 2) {
404
415
  if (this._scheduleMap.has(data.sessionUuid)) {
@@ -413,11 +424,13 @@ class FcrPeerSessionControlImpl {
413
424
  cause: data.payload?.cause ?? {},
414
425
  keepAlive: !!data.keepAlive
415
426
  };
416
- this.logger.info(`[PeerSession] received peer session rejected ${JSON.stringify(sessionResponse)}`);
417
427
  if (this._scheduleMap.has(data.sessionUuid)) {
418
428
  this._scheduleMap.delete(data.sessionUuid);
429
+ this.logger.info(`[PeerSession] forward peer session rejected to observers: ${logContext}`);
419
430
  this._observable.notifyObservers('onPeerSessionRejected', sessionResponse);
420
431
  }
432
+ } else {
433
+ this.logger.info(`[PeerSession] ignore peer session rejected without local schedule: ${logContext}`);
421
434
  }
422
435
  } else if (data.action === 3) {
423
436
  const scheduleSession = this._scheduleMap.get(data.sessionUuid);
@@ -429,7 +442,6 @@ class FcrPeerSessionControlImpl {
429
442
  fromUserId: senderId,
430
443
  cause: data.payload?.cause ?? {}
431
444
  };
432
- this.logger.info(`[PeerSession] received peer session ended ${JSON.stringify(params)}`);
433
445
  if (scheduleSession) {
434
446
  this._scheduleMap.delete(data.sessionUuid);
435
447
  }
@@ -437,8 +449,15 @@ class FcrPeerSessionControlImpl {
437
449
  this._receivedMap.delete(data.sessionUuid);
438
450
  }
439
451
  this._observable.notifyObservers('onPeerSessionEnded', params.sessionId, params.fromUserId, params.cause);
452
+ this.logger.info(`[PeerSession] forward peer session ended to observers: ${logContext}`);
453
+ } else {
454
+ this.logger.info(`[PeerSession] ignore peer session ended without cached session: ${logContext}`);
440
455
  }
456
+ } else {
457
+ this.logger.info(`[PeerSession] ignore peer session response with unknown action: ${logContext}`);
441
458
  }
459
+ } else {
460
+ this.logger.info(`[PeerSession] ignore unsupported peer session cmd: ${logContext}`);
442
461
  }
443
462
  }
444
463
 
@@ -78,13 +78,17 @@ class FcrRemoteControlImpl {
78
78
  data,
79
79
  cmd
80
80
  } = payload;
81
+ const logContext = `cmd=${cmd}, sessionKey=${data.sessionKey}, sessionId=${data.sessionUuid}, ` + `action=${String(data.action)}, senderId=${senderId}, keepAlive=${!!data.keepAlive}`;
81
82
  if (data.sessionKey !== this._remoteControlSessionKey) {
83
+ this.logger.info(`[RemoteControl] ignore peer message because sessionKey does not match remote-control: ${logContext}`);
82
84
  return;
83
85
  }
84
86
  if (cmd === '1001') {
85
87
  if (!data.keepAlive) {
88
+ this.logger.info(`[RemoteControl] ignore remote-control update without keepAlive: ${logContext}`);
86
89
  return;
87
90
  }
91
+ this.logger.info(`[RemoteControl] forward update session for handling: ${logContext}`);
88
92
  return await this._handleUpdateRemoteControlSession({
89
93
  senderId: senderId,
90
94
  sessionKey: data.sessionKey,
@@ -97,6 +101,7 @@ class FcrRemoteControlImpl {
97
101
  timestamp: message.timestamp
98
102
  });
99
103
  } else if (cmd === '1002') {
104
+ this.logger.info(`[RemoteControl] forward delete session for handling: ${logContext}`);
100
105
  return await this._handleDeleteRemoteControlSession({
101
106
  senderId: senderId,
102
107
  sessionKey: data.sessionKey,
@@ -107,6 +112,8 @@ class FcrRemoteControlImpl {
107
112
  action: data.action,
108
113
  timestamp: message.timestamp
109
114
  });
115
+ } else {
116
+ this.logger.info(`[RemoteControl] ignore unsupported cmd: ${logContext}`);
110
117
  }
111
118
  }
112
119
  async _handleUpdateRemoteControlSession(data) {
@@ -320,6 +320,8 @@ export class FcrPeerSessionControlImpl {
320
320
  data,
321
321
  cmd
322
322
  } = payload;
323
+ const logContext = `cmd=${cmd}, sessionKey=${data.sessionKey}, sessionId=${data.sessionUuid}, ` + `action=${String(data.action)}, senderId=${senderId}, keepAlive=${!!data.keepAlive}`;
324
+ this.logger.info(`[PeerSession] received peer message: ${logContext}, payload=${JSON.stringify(data.payload ?? {})}`);
323
325
  if (cmd === '1001') {
324
326
  const session = {
325
327
  sessionId: data.sessionUuid,
@@ -352,7 +354,10 @@ export class FcrPeerSessionControlImpl {
352
354
  ...params,
353
355
  action: 1
354
356
  });
357
+ this.logger.info(`[PeerSession] forward peer session accepted to observers: ${logContext}`);
355
358
  this._observable.notifyObservers('onPeerSessionAccepted', sessionResponse);
359
+ } else {
360
+ this.logger.info(`[PeerSession] ignore peer session accepted without local schedule: ${logContext}`);
356
361
  }
357
362
  if (this._receivedMap.has(session.sessionId)) {
358
363
  this._receivedMap.set(session.sessionId, {
@@ -365,8 +370,10 @@ export class FcrPeerSessionControlImpl {
365
370
  return;
366
371
  } else {
367
372
  if (!this._receivedMap.has(session.sessionId)) {
368
- this.logger.info(`[PeerSession] received peer session request ${JSON.stringify(session)}`);
373
+ this.logger.info(`[PeerSession] forward peer session request to observers: ${logContext}`);
369
374
  this._observable.notifyObservers('onPeerSessionReceived', session);
375
+ } else {
376
+ this.logger.info(`[PeerSession] peer session request already cached, update cache only: ${logContext}`);
370
377
  }
371
378
  this._receivedMap.set(session.sessionId, {
372
379
  ...session,
@@ -375,6 +382,8 @@ export class FcrPeerSessionControlImpl {
375
382
  action: 0
376
383
  });
377
384
  }
385
+ } else {
386
+ this.logger.info(`[PeerSession] ignore expired peer session message: ${logContext}, ` + `timestamp=${session.timestamp}, duration=${session.duration}`);
378
387
  }
379
388
  } else if (cmd === '1002') {
380
389
  if (data.action === 1) {
@@ -390,9 +399,11 @@ export class FcrPeerSessionControlImpl {
390
399
  cause: data.payload?.cause ?? {},
391
400
  keepAlive: !!data.keepAlive
392
401
  };
393
- this.logger.info(`[PeerSession] received peer session accepted ${JSON.stringify(sessionResponse)}`);
394
402
  this._scheduleMap.delete(data.sessionUuid);
403
+ this.logger.info(`[PeerSession] forward peer session accepted to observers: ${logContext}`);
395
404
  this._observable.notifyObservers('onPeerSessionAccepted', sessionResponse);
405
+ } else {
406
+ this.logger.info(`[PeerSession] ignore peer session accepted without local schedule: ${logContext}`);
396
407
  }
397
408
  } else if (data.action === 2) {
398
409
  if (this._scheduleMap.has(data.sessionUuid)) {
@@ -407,11 +418,13 @@ export class FcrPeerSessionControlImpl {
407
418
  cause: data.payload?.cause ?? {},
408
419
  keepAlive: !!data.keepAlive
409
420
  };
410
- this.logger.info(`[PeerSession] received peer session rejected ${JSON.stringify(sessionResponse)}`);
411
421
  if (this._scheduleMap.has(data.sessionUuid)) {
412
422
  this._scheduleMap.delete(data.sessionUuid);
423
+ this.logger.info(`[PeerSession] forward peer session rejected to observers: ${logContext}`);
413
424
  this._observable.notifyObservers('onPeerSessionRejected', sessionResponse);
414
425
  }
426
+ } else {
427
+ this.logger.info(`[PeerSession] ignore peer session rejected without local schedule: ${logContext}`);
415
428
  }
416
429
  } else if (data.action === 3) {
417
430
  const scheduleSession = this._scheduleMap.get(data.sessionUuid);
@@ -423,7 +436,6 @@ export class FcrPeerSessionControlImpl {
423
436
  fromUserId: senderId,
424
437
  cause: data.payload?.cause ?? {}
425
438
  };
426
- this.logger.info(`[PeerSession] received peer session ended ${JSON.stringify(params)}`);
427
439
  if (scheduleSession) {
428
440
  this._scheduleMap.delete(data.sessionUuid);
429
441
  }
@@ -431,8 +443,15 @@ export class FcrPeerSessionControlImpl {
431
443
  this._receivedMap.delete(data.sessionUuid);
432
444
  }
433
445
  this._observable.notifyObservers('onPeerSessionEnded', params.sessionId, params.fromUserId, params.cause);
446
+ this.logger.info(`[PeerSession] forward peer session ended to observers: ${logContext}`);
447
+ } else {
448
+ this.logger.info(`[PeerSession] ignore peer session ended without cached session: ${logContext}`);
434
449
  }
450
+ } else {
451
+ this.logger.info(`[PeerSession] ignore peer session response with unknown action: ${logContext}`);
435
452
  }
453
+ } else {
454
+ this.logger.info(`[PeerSession] ignore unsupported peer session cmd: ${logContext}`);
436
455
  }
437
456
  }
438
457
 
@@ -72,13 +72,17 @@ export class FcrRemoteControlImpl {
72
72
  data,
73
73
  cmd
74
74
  } = payload;
75
+ const logContext = `cmd=${cmd}, sessionKey=${data.sessionKey}, sessionId=${data.sessionUuid}, ` + `action=${String(data.action)}, senderId=${senderId}, keepAlive=${!!data.keepAlive}`;
75
76
  if (data.sessionKey !== this._remoteControlSessionKey) {
77
+ this.logger.info(`[RemoteControl] ignore peer message because sessionKey does not match remote-control: ${logContext}`);
76
78
  return;
77
79
  }
78
80
  if (cmd === '1001') {
79
81
  if (!data.keepAlive) {
82
+ this.logger.info(`[RemoteControl] ignore remote-control update without keepAlive: ${logContext}`);
80
83
  return;
81
84
  }
85
+ this.logger.info(`[RemoteControl] forward update session for handling: ${logContext}`);
82
86
  return await this._handleUpdateRemoteControlSession({
83
87
  senderId: senderId,
84
88
  sessionKey: data.sessionKey,
@@ -91,6 +95,7 @@ export class FcrRemoteControlImpl {
91
95
  timestamp: message.timestamp
92
96
  });
93
97
  } else if (cmd === '1002') {
98
+ this.logger.info(`[RemoteControl] forward delete session for handling: ${logContext}`);
94
99
  return await this._handleDeleteRemoteControlSession({
95
100
  senderId: senderId,
96
101
  sessionKey: data.sessionKey,
@@ -101,6 +106,8 @@ export class FcrRemoteControlImpl {
101
106
  action: data.action,
102
107
  timestamp: message.timestamp
103
108
  });
109
+ } else {
110
+ this.logger.info(`[RemoteControl] ignore unsupported cmd: ${logContext}`);
104
111
  }
105
112
  }
106
113
  async _handleUpdateRemoteControlSession(data) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fcr-core",
3
3
  "description": "Core APIs for building online scenes",
4
- "version": "3.10.1-rc.2",
4
+ "version": "3.10.1",
5
5
  "module": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "files": [
@@ -41,7 +41,7 @@
41
41
  "@types/lodash": "^4.14.168",
42
42
  "@types/sinon": "^17.0.2",
43
43
  "@types/uuid": "^8.3.0",
44
- "agora-toolchain": "3.10.1-rc.2",
44
+ "agora-toolchain": "3.10.1",
45
45
  "core-js": "^3.33.3",
46
46
  "decomment": "^0.9.5",
47
47
  "husky": "^9.0.11",
@@ -55,14 +55,14 @@
55
55
  "dependencies": {
56
56
  "@netless/app-slide": "^0.2.81",
57
57
  "@netless/appliance-plugin": "^1.1.21",
58
- "@netless/forge-room": "1.1.0",
59
- "@netless/forge-rtm": "1.1.0",
60
- "@netless/forge-whiteboard": "1.1.0",
58
+ "@netless/forge-room": "1.2.0-alpha.1",
59
+ "@netless/forge-rtm": "1.2.0-alpha.1",
60
+ "@netless/forge-whiteboard": "1.2.0-alpha.1",
61
61
  "@netless/video-js-plugin": "^0.3.8",
62
62
  "@netless/white-snapshot": "^0.4.2",
63
63
  "@netless/window-manager": "^1.0.7-beta.6",
64
- "agora-foundation": "3.10.1-rc.2",
65
- "agora-rte-sdk": "3.10.1-rc.2",
64
+ "agora-foundation": "3.10.1",
65
+ "agora-rte-sdk": "3.10.1",
66
66
  "await-to-js": "^3.0.0",
67
67
  "dayjs": "^1.10.4",
68
68
  "easemob-websdk": "4.13.0",