@vworlds/dgram-server 1.0.7 → 1.0.9

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.
@@ -17,6 +17,10 @@ export interface ServerOptions {
17
17
  label: string;
18
18
  /** Enables node-datachannel's UDP mux support when available. */
19
19
  enableIceUdpMux?: boolean;
20
+ /** Public host advertised in UDP host ICE candidates, useful behind Docker or NAT. */
21
+ advertisedUdpHost?: string;
22
+ /** Public port advertised in UDP host ICE candidates, useful behind Docker or NAT. */
23
+ advertisedUdpPort?: number;
20
24
  /** The maximum number of milliseconds that attempts to transfer a message may take in unreliable mode. While this value is a 16-bit unsigned number, each user agent may clamp it to whatever maximum it deems appropriate. Default: undefined. */
21
25
  maxPacketLifeTime?: number;
22
26
  /** options.maxRetransmits The maximum number of times the user agent should attempt to retransmit a message which fails the first time in unreliable mode. While this value is a16-bit unsigned number, each user agent may clamp it to whatever maximum it deems appropriate. Default: 0. */
@@ -10,15 +10,22 @@ export class ServerSocket extends Socket {
10
10
  constructor(connection) {
11
11
  super();
12
12
  this.connection = connection;
13
+ let disconnected = false;
14
+ const emitDisconnect = () => {
15
+ if (disconnected) {
16
+ return;
17
+ }
18
+ disconnected = true;
19
+ this.emit('disconnect');
20
+ };
13
21
  this.connection.on(EVENTS.DATA_CHANNEL_IS_OPEN, (err) => {
14
22
  this.emit('connect', err);
15
23
  });
16
24
  this.connection.on(EVENTS.MESSAGE, (data) => {
17
25
  this.emit('receive', data);
18
26
  });
19
- this.connection.on(EVENTS.DISCONNECTED, () => {
20
- this.emit('disconnect');
21
- });
27
+ this.connection.on(EVENTS.DISCONNECTED, emitDisconnect);
28
+ this.connection.on(EVENTS.ERROR, emitDisconnect);
22
29
  }
23
30
  /** Connection id assigned by the server connection manager. */
24
31
  get id() {
@@ -1 +1 @@
1
- {"version":3,"file":"server-socket.js","sourceRoot":"","sources":["../../../../src/server/server-socket.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EACN,MAAM,GACP,MAAM,oCAAoC,CAAC;AAE5C,gEAAgE;AAChE,MAAM,OAAO,YAAa,SAAQ,MAAM;IAMnB;IALnB;;;;OAIG;IACH,YAAmB,UAA4B;QAC7C,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAkB;QAG7C,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,GAAoB,EAAE,EAAE;YACvE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,IAAgB;QACnB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,+DAA+D;IAC/D,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"server-socket.js","sourceRoot":"","sources":["../../../../src/server/server-socket.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EACN,MAAM,GACP,MAAM,oCAAoC,CAAC;AAE5C,gEAAgE;AAChE,MAAM,OAAO,YAAa,SAAQ,MAAM;IAMnB;IALnB;;;;OAIG;IACH,YAAmB,UAA4B;QAC7C,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAkB;QAG7C,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,YAAY,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,GAAoB,EAAE,EAAE;YACvE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC;IAED,+DAA+D;IAC/D,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,IAAgB;QACnB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,+DAA+D;IAC/D,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -8,7 +8,11 @@ export default class ConnectionsManager extends EventEmitter {
8
8
  private connections;
9
9
  /** @param options WebRTC and data channel settings applied to new connections. */
10
10
  constructor(options: ServerOptions);
11
- /** Creates a random connection id used by signaling routes. */
11
+ /**
12
+ * Creates a cryptographically strong connection id used by signaling
13
+ * routes. The id is the only credential controlling per-connection
14
+ * signaling endpoints, so it must be unguessable.
15
+ */
12
16
  private createId;
13
17
  /** Looks up an active server connection by id. */
14
18
  getConnection(id: string): WebRTCConnection | undefined;
@@ -1,6 +1,7 @@
1
1
  import { ReliabilityType, } from '../../server/server-options.js';
2
2
  import WebRTCConnection from './webrtc-connection.js';
3
3
  import { EventEmitter } from 'events';
4
+ import { randomUUID } from 'node:crypto';
4
5
  import { EVENTS } from '@vworlds/dgram-common';
5
6
  /** Creates, stores, and deletes server-side WebRTC connections. */
6
7
  export default class ConnectionsManager extends EventEmitter {
@@ -12,14 +13,13 @@ export default class ConnectionsManager extends EventEmitter {
12
13
  super();
13
14
  this.options = options;
14
15
  }
15
- /** Creates a random connection id used by signaling routes. */
16
+ /**
17
+ * Creates a cryptographically strong connection id used by signaling
18
+ * routes. The id is the only credential controlling per-connection
19
+ * signaling endpoints, so it must be unguessable.
20
+ */
16
21
  createId() {
17
- const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
18
- let id = '';
19
- for (let i = 0; i < 24; i++) {
20
- id += possible.charAt(Math.floor(Math.random() * possible.length));
21
- }
22
- return id;
22
+ return randomUUID();
23
23
  }
24
24
  /** Looks up an active server connection by id. */
25
25
  getConnection(id) {
@@ -62,9 +62,6 @@ export default class ConnectionsManager extends EventEmitter {
62
62
  reject(undefined);
63
63
  }
64
64
  this.connections.set(connection.id, connection);
65
- pc.onDataChannel((dc) => {
66
- // do nothing
67
- });
68
65
  pc.onStateChange(async (state) => {
69
66
  if (state === 'disconnected' ||
70
67
  state === 'failed' ||
@@ -73,13 +70,11 @@ export default class ConnectionsManager extends EventEmitter {
73
70
  }
74
71
  connection.setState(state);
75
72
  });
76
- pc.onGatheringStateChange((state) => { });
77
73
  pc.onLocalDescription((sdp, type) => {
78
74
  connection.localDescription = { sdp, type };
79
75
  resolve(connection);
80
76
  });
81
77
  pc.onLocalCandidate((candidate, mid) => {
82
- // @ts-ignore
83
78
  connection.iceCandidates.push({ candidate, sdpMid: mid });
84
79
  });
85
80
  await connection.setupDataChannel(label, dcConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"connections-manager.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/connections-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connections-manager.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/connections-manager.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,13 @@ export interface LocalDescription {
8
8
  /** SDP description type, usually `offer`. */
9
9
  type: string;
10
10
  }
11
+ /** ICE candidate payload returned by the HTTP signaling API. */
12
+ export interface IceCandidatePayload {
13
+ /** Raw SDP candidate line gathered by node-datachannel. */
14
+ candidate: string;
15
+ /** SDP media section id for the candidate. */
16
+ sdpMid: string;
17
+ }
11
18
  /** Low-level server-side WebRTC peer and data channel wrapper. */
12
19
  export default class WebRTCConnection extends EventEmitter {
13
20
  id: string;
@@ -22,7 +29,7 @@ export default class WebRTCConnection extends EventEmitter {
22
29
  /** Current local SDP description sent to the browser during signaling. */
23
30
  localDescription: LocalDescription;
24
31
  /** ICE candidates gathered since the browser last polled the signaling API. */
25
- iceCandidates: RTCIceCandidate[];
32
+ iceCandidates: IceCandidatePayload[];
26
33
  /**
27
34
  * Creates a low-level server WebRTC connection wrapper.
28
35
  *
@@ -41,9 +41,12 @@ export default class WebRTCConnection extends EventEmitter {
41
41
  this.emit(EVENTS.CONNECT);
42
42
  }
43
43
  else if (state === 'failed') {
44
- this.emit(EVENTS.ERROR);
44
+ if (this.listenerCount(EVENTS.ERROR) > 0) {
45
+ this.emit(EVENTS.ERROR);
46
+ }
47
+ this.emit(EVENTS.DISCONNECTED);
45
48
  }
46
- else if (state === 'closed') {
49
+ else if (state === 'disconnected' || state === 'closed') {
47
50
  this.emit(EVENTS.DISCONNECTED);
48
51
  }
49
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-connection.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/webrtc-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webrtc-connection.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/webrtc-connection.ts"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ export function getIceCandidates(connectionMgr, req, res) {
66
66
  sendStatus(res, 404, 'Connection not found');
67
67
  return;
68
68
  }
69
- const iceCandidates = [...conn.iceCandidates];
69
+ const iceCandidates = withAdvertisedIceCandidates(conn.iceCandidates, connectionMgr.options ?? {});
70
70
  conn.iceCandidates = [];
71
71
  sendJson(res, iceCandidates);
72
72
  }
@@ -75,4 +75,35 @@ export function getIceCandidates(connectionMgr, req, res) {
75
75
  sendStatus(res, 500, '');
76
76
  }
77
77
  }
78
+ function withAdvertisedIceCandidates(candidates, options) {
79
+ return candidates.flatMap((candidate) => {
80
+ const advertisedCandidate = createAdvertisedIceCandidate(candidate, options);
81
+ return advertisedCandidate === undefined
82
+ ? [candidate]
83
+ : [advertisedCandidate, candidate];
84
+ });
85
+ }
86
+ function createAdvertisedIceCandidate(candidate, options) {
87
+ if (options.advertisedUdpHost === undefined &&
88
+ options.advertisedUdpPort === undefined) {
89
+ return undefined;
90
+ }
91
+ const fields = candidate.candidate.split(' ');
92
+ if (!isUdpHostCandidate(fields)) {
93
+ return undefined;
94
+ }
95
+ fields[4] = options.advertisedUdpHost ?? fields[4];
96
+ fields[5] = String(options.advertisedUdpPort ?? fields[5]);
97
+ const advertisedCandidate = fields.join(' ');
98
+ if (advertisedCandidate === candidate.candidate) {
99
+ return undefined;
100
+ }
101
+ return { ...candidate, candidate: advertisedCandidate };
102
+ }
103
+ function isUdpHostCandidate(fields) {
104
+ return (fields.length >= 8 &&
105
+ fields[2]?.toLowerCase() === 'udp' &&
106
+ fields[6] === 'typ' &&
107
+ fields[7] === 'host');
108
+ }
78
109
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../../src/webrtc/http/routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEpD,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAiC,EACjC,GAAoB,EACpB,GAAqB;IAErB,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,CACR,GAAG,EACH,GAAG,EACH,yDAAyD,CAC1D,CAAC;QACF,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,GAAG,EAAE;QACZ,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC,CAAC;AACL,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,aAAa,CAC3B,aAAiC,EACjC,GAAoB,EACpB,GAAqB;IAErB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,eAAe,CAC7B,aAAiC,EACjC,GAAoB,EACpB,GAAqB;IAErB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAC9B,aAAiC,EACjC,GAAoB,EACpB,GAAqB;IAErB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../../src/webrtc/http/routes.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vworlds/dgram-common",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vworlds/dgram-server",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "type": "module",
5
5
  "main": "./dgram-server/src/index.js",
6
6
  "types": "./dgram-server/src/index.d.ts",
@@ -15,7 +15,7 @@
15
15
  "url": "https://github.com/vworlds/dgram"
16
16
  },
17
17
  "dependencies": {
18
- "@vworlds/dgram-common": "1.0.7",
18
+ "@vworlds/dgram-common": "1.0.9",
19
19
  "eventemitter3": "^5.0.4",
20
20
  "express": "^4.18.2",
21
21
  "node-datachannel": "^0.32.3"