@libp2p/webrtc 3.1.10 → 3.1.11-6cb80f7d
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/dist/index.min.js +13 -13
- package/dist/src/private-to-private/handler.js +1 -1
- package/dist/src/private-to-private/transport.d.ts +7 -0
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +19 -2
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/transport.js +2 -2
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/stream.d.ts +8 -0
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +16 -12
- package/dist/src/stream.js.map +1 -1
- package/package.json +10 -10
- package/src/private-to-private/handler.ts +1 -1
- package/src/private-to-private/transport.ts +26 -2
- package/src/private-to-public/transport.ts +2 -2
- package/src/stream.ts +18 -13
- package/dist/typedoc-urls.json +0 -6
|
@@ -132,6 +132,6 @@ function parseRemoteAddress(sdp) {
|
|
|
132
132
|
log('could not parse remote address from', candidateLine);
|
|
133
133
|
return '/webrtc';
|
|
134
134
|
}
|
|
135
|
-
return `/dnsaddr/${candidateParts[4]}/${candidateParts[2].toLowerCase()}/${candidateParts[
|
|
135
|
+
return `/dnsaddr/${candidateParts[4]}/${candidateParts[2].toLowerCase()}/${candidateParts[5]}/webrtc`;
|
|
136
136
|
}
|
|
137
137
|
//# sourceMappingURL=handler.js.map
|
|
@@ -3,6 +3,7 @@ import { type Multiaddr } from '@multiformats/multiaddr';
|
|
|
3
3
|
import type { DataChannelOpts } from '../stream.js';
|
|
4
4
|
import type { Connection } from '@libp2p/interface/connection';
|
|
5
5
|
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
6
|
+
import type { CounterGroup, Metrics } from '@libp2p/interface/src/metrics/index.js';
|
|
6
7
|
import type { Startable } from '@libp2p/interface/startable';
|
|
7
8
|
import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar';
|
|
8
9
|
import type { TransportManager } from '@libp2p/interface-internal/transport-manager';
|
|
@@ -15,11 +16,17 @@ export interface WebRTCTransportComponents {
|
|
|
15
16
|
registrar: Registrar;
|
|
16
17
|
upgrader: Upgrader;
|
|
17
18
|
transportManager: TransportManager;
|
|
19
|
+
metrics?: Metrics;
|
|
20
|
+
}
|
|
21
|
+
export interface WebRTCTransportMetrics {
|
|
22
|
+
dialerEvents: CounterGroup;
|
|
23
|
+
listenerEvents: CounterGroup;
|
|
18
24
|
}
|
|
19
25
|
export declare class WebRTCTransport implements Transport, Startable {
|
|
20
26
|
private readonly components;
|
|
21
27
|
private readonly init;
|
|
22
28
|
private _started;
|
|
29
|
+
private readonly metrics?;
|
|
23
30
|
constructor(components: WebRTCTransportComponents, init?: WebRTCTransportInit);
|
|
24
31
|
isStarted(): boolean;
|
|
25
32
|
start(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGhJ,OAAO,EAAa,KAAK,SAAS,EAAa,MAAM,yBAAyB,CAAA;AAM9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AASpF,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,EAAE,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGhJ,OAAO,EAAa,KAAK,SAAS,EAAa,MAAM,yBAAyB,CAAA;AAM9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AASpF,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,YAAY,CAAA;CAC7B;AAED,qBAAa,eAAgB,YAAW,SAAS,EAAE,SAAS;IAKxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAwB;gBAG9B,UAAU,EAAE,yBAAyB,EACrC,IAAI,GAAE,mBAAwB;IAgBjD,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IASvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAM5B,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAIzD,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAO;IAExB,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAcvC,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAoD/D,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CA2B9E;AAED,wBAAgB,SAAS,CAAE,EAAE,EAAE,SAAS,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA4BjF"}
|
|
@@ -17,9 +17,22 @@ export class WebRTCTransport {
|
|
|
17
17
|
components;
|
|
18
18
|
init;
|
|
19
19
|
_started = false;
|
|
20
|
+
metrics;
|
|
20
21
|
constructor(components, init = {}) {
|
|
21
22
|
this.components = components;
|
|
22
23
|
this.init = init;
|
|
24
|
+
if (components.metrics != null) {
|
|
25
|
+
this.metrics = {
|
|
26
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_dialer_events_total', {
|
|
27
|
+
label: 'event',
|
|
28
|
+
help: 'Total count of WebRTC dialer events by type'
|
|
29
|
+
}),
|
|
30
|
+
listenerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_listener_events_total', {
|
|
31
|
+
label: 'event',
|
|
32
|
+
help: 'Total count of WebRTC listener events by type'
|
|
33
|
+
})
|
|
34
|
+
};
|
|
35
|
+
}
|
|
23
36
|
}
|
|
24
37
|
isStarted() {
|
|
25
38
|
return this._started;
|
|
@@ -62,6 +75,7 @@ export class WebRTCTransport {
|
|
|
62
75
|
const controller = new AbortController();
|
|
63
76
|
options.signal = controller.signal;
|
|
64
77
|
}
|
|
78
|
+
this.metrics?.dialerEvents.increment({ open: true });
|
|
65
79
|
const connection = await this.components.transportManager.dial(baseAddr, options);
|
|
66
80
|
const signalingStream = await connection.newStream(SIGNALING_PROTO_ID, {
|
|
67
81
|
...options,
|
|
@@ -77,7 +91,8 @@ export class WebRTCTransport {
|
|
|
77
91
|
const result = await options.upgrader.upgradeOutbound(new WebRTCMultiaddrConnection({
|
|
78
92
|
peerConnection: pc,
|
|
79
93
|
timeline: { open: Date.now() },
|
|
80
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`)
|
|
94
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`),
|
|
95
|
+
metrics: this.metrics?.dialerEvents
|
|
81
96
|
}), {
|
|
82
97
|
skipProtection: true,
|
|
83
98
|
skipEncryption: true,
|
|
@@ -88,6 +103,7 @@ export class WebRTCTransport {
|
|
|
88
103
|
return result;
|
|
89
104
|
}
|
|
90
105
|
catch (err) {
|
|
106
|
+
this.metrics?.dialerEvents.increment({ error: true });
|
|
91
107
|
// reset the stream in case of any error
|
|
92
108
|
signalingStream.abort(err);
|
|
93
109
|
throw err;
|
|
@@ -108,7 +124,8 @@ export class WebRTCTransport {
|
|
|
108
124
|
await this.components.upgrader.upgradeInbound(new WebRTCMultiaddrConnection({
|
|
109
125
|
peerConnection: pc,
|
|
110
126
|
timeline: { open: (new Date()).getTime() },
|
|
111
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`)
|
|
127
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`),
|
|
128
|
+
metrics: this.metrics?.listenerEvents
|
|
112
129
|
}), {
|
|
113
130
|
skipEncryption: true,
|
|
114
131
|
skipProtection: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAgD,MAAM,EAAgD,MAAM,6BAA6B,CAAA;AAChJ,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAkB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAgD,MAAM,EAAgD,MAAM,6BAA6B,CAAA;AAChJ,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAkB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AASlD,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAExC,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAClC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AAC9C,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AACpD,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAA;AAoB5C,MAAM,OAAO,eAAe;IAKP;IACA;IALX,QAAQ,GAAG,KAAK,CAAA;IACP,OAAO,CAAyB;IAEjD,YACmB,UAAqC,EACrC,OAA4B,EAAE;QAD9B,eAAU,GAAV,UAAU,CAA2B;QACrC,SAAI,GAAJ,IAAI,CAA0B;QAE/C,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG;gBACb,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,EAAE;oBACzF,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,6CAA6C;iBACpD,CAAC;gBACF,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,qCAAqC,EAAE;oBAC7F,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,+CAA+C;iBACtD,CAAC;aACH,CAAA;SACF;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,IAAwB,EAAE,EAAE;YACtF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAClI,CAAC,EAAE;YACD,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC5D,OAAO,EAAE,CAAA;QACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;IACvB,CAAC;IAED,cAAc,CAAE,OAA8B;QAC5C,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAA;IAEvC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAExB,MAAM,CAAE,UAAuB;QAC7B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,EAAE,CAAA;YAC7B,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;MAME;IACF,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAoB;QAC7C,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;QAE1C,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;SACnC;QAED,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACjF,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACrE,GAAG,OAAO;YACV,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QAEF,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAkB,CAAC;gBACnE,MAAM,EAAE,eAAe;gBACvB,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC5C,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBACzC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CACnD,IAAI,yBAAyB,CAAC;gBAC5B,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC9B,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY;aACpC,CAAC,EACF;gBACE,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,YAAY;aACb,CACF,CAAA;YAED,0DAA0D;YAC1D,MAAM,eAAe,CAAC,KAAK,EAAE,CAAA;YAC7B,OAAO,MAAM,CAAA;SACd;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,wCAAwC;YACxC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC1B,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,iCAAiC;YACjC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAsB;QAC3D,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,oBAAoB,CAAC;gBACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC5C,UAAU;gBACV,MAAM;gBACN,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;aAC1C,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC;gBAC1E,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC1C,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC5F,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc;aACtC,CAAC,EAAE;gBACF,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,YAAY;aACb,CAAC,CAAA;SACH;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,iCAAiC;YACjC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAE,EAAa;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAA;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,MAAM,IAAI,SAAS,CAAC,8CAA8C,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACjG;IAED,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;QAC/C,MAAM,IAAI,SAAS,CAAC,mDAAmD,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACtG;IAED,yBAAyB;IACzB,IAAI,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7C,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,EAAE,CAAA;IACnD,IAAI,mBAAmB,IAAI,IAAI,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACpF;IAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAA;IACnD,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACnC,MAAM,IAAI,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACtE;IACD,IAAI,iBAAiB,CAAC,IAAI,KAAK,KAAK,EAAE;QACpC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,mBAAmB,EAAE,CAAC,CAAA;KACnE;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,CAAA;AAChF,CAAC"}
|
|
@@ -40,9 +40,9 @@ export class WebRTCDirectTransport {
|
|
|
40
40
|
this.init = init;
|
|
41
41
|
if (components.metrics != null) {
|
|
42
42
|
this.metrics = {
|
|
43
|
-
dialerEvents: components.metrics.registerCounterGroup('
|
|
43
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {
|
|
44
44
|
label: 'event',
|
|
45
|
-
help: 'Total count of WebRTC dial events by type'
|
|
45
|
+
help: 'Total count of WebRTC-direct dial events by type'
|
|
46
46
|
})
|
|
47
47
|
};
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAA8B,MAAM,EAAiC,MAAM,6BAA6B,CAAA;AAC/G,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACtG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQpC,MAAM,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAE7C;;GAEG;AACH,MAAM,oBAAoB,GAAG,KAAM,CAAA;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAW,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAA;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAA;AAkB/D,MAAM,OAAO,qBAAqB;IACf,OAAO,CAAgB;IACvB,UAAU,CAAiC;IAC3C,IAAI,CAA2B;IAChD,YAAa,UAA2C,EAAE,OAAkC,EAAE;QAC5F,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG;gBACb,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stream.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ export interface WebRTCStreamInit extends AbstractStreamInit {
|
|
|
17
17
|
dataChannelOptions?: Partial<DataChannelOpts>;
|
|
18
18
|
maxDataSize: number;
|
|
19
19
|
}
|
|
20
|
+
export declare const MAX_MESSAGE_SIZE: number;
|
|
21
|
+
export declare const MAX_BUFFERED_AMOUNT: number;
|
|
22
|
+
export declare const BUFFERED_AMOUNT_LOW_TIMEOUT: number;
|
|
23
|
+
export declare const PROTOBUF_OVERHEAD = 5;
|
|
24
|
+
export declare const VARINT_LENGTH = 2;
|
|
20
25
|
export declare class WebRTCStream extends AbstractStream {
|
|
21
26
|
/**
|
|
22
27
|
* The data channel used to send and receive data
|
|
@@ -32,6 +37,9 @@ export declare class WebRTCStream extends AbstractStream {
|
|
|
32
37
|
*/
|
|
33
38
|
private readonly incomingData;
|
|
34
39
|
private messageQueue?;
|
|
40
|
+
/**
|
|
41
|
+
* The maximum size of a message in bytes
|
|
42
|
+
*/
|
|
35
43
|
private readonly maxDataSize;
|
|
36
44
|
constructor(init: WebRTCStreamInit);
|
|
37
45
|
sendNewStream(): void;
|
package/dist/src/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAK/F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAK/F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,6BAA6B,EAAE,MAAM,CAAA;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAE7C,WAAW,EAAE,MAAM,CAAA;CACpB;AAGD,eAAO,MAAM,gBAAgB,QAAY,CAAA;AAGzC,eAAO,MAAM,mBAAmB,QAAmB,CAAA;AAGnD,eAAO,MAAM,2BAA2B,QAAY,CAAA;AAGpD,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAGlC,eAAO,MAAM,aAAa,IAAI,CAAA;AAE9B,qBAAa,YAAa,SAAQ,cAAc;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;IAEpD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD,OAAO,CAAC,YAAY,CAAC,CAAgB;IAErC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;gBAEvB,IAAI,EAAE,gBAAgB;IAuFnC,aAAa,IAAK,IAAI;IAIhB,YAAY,CAAE,IAAI,EAAE,cAAc,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC/E,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;IAI3B,cAAc,IAAK,OAAO,CAAC,IAAI,CAAC;IAIhC,aAAa,IAAK,OAAO,CAAC,IAAI,CAAC;IAIrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;YAwBjB,SAAS;CAOxB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAE7C,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAA;CAC1C;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAYxE"}
|
package/dist/src/stream.js
CHANGED
|
@@ -6,15 +6,16 @@ import { pushable } from 'it-pushable';
|
|
|
6
6
|
import { pEvent, TimeoutError } from 'p-event';
|
|
7
7
|
import { Uint8ArrayList } from 'uint8arraylist';
|
|
8
8
|
import { Message } from './pb/message.js';
|
|
9
|
-
const log = logger('libp2p:webrtc:stream');
|
|
10
9
|
// Max message size that can be sent to the DataChannel
|
|
11
|
-
const MAX_MESSAGE_SIZE = 16 * 1024;
|
|
10
|
+
export const MAX_MESSAGE_SIZE = 16 * 1024;
|
|
12
11
|
// How much can be buffered to the DataChannel at once
|
|
13
|
-
const MAX_BUFFERED_AMOUNT = 16 * 1024 * 1024;
|
|
12
|
+
export const MAX_BUFFERED_AMOUNT = 16 * 1024 * 1024;
|
|
14
13
|
// How long time we wait for the 'bufferedamountlow' event to be emitted
|
|
15
|
-
const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;
|
|
14
|
+
export const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;
|
|
16
15
|
// protobuf field definition overhead
|
|
17
|
-
const PROTOBUF_OVERHEAD =
|
|
16
|
+
export const PROTOBUF_OVERHEAD = 5;
|
|
17
|
+
// Length of varint, in bytes.
|
|
18
|
+
export const VARINT_LENGTH = 2;
|
|
18
19
|
export class WebRTCStream extends AbstractStream {
|
|
19
20
|
/**
|
|
20
21
|
* The data channel used to send and receive data
|
|
@@ -30,6 +31,9 @@ export class WebRTCStream extends AbstractStream {
|
|
|
30
31
|
*/
|
|
31
32
|
incomingData;
|
|
32
33
|
messageQueue;
|
|
34
|
+
/**
|
|
35
|
+
* The maximum size of a message in bytes
|
|
36
|
+
*/
|
|
33
37
|
maxDataSize;
|
|
34
38
|
constructor(init) {
|
|
35
39
|
super(init);
|
|
@@ -40,7 +44,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
40
44
|
this.dataChannelOptions = {
|
|
41
45
|
bufferedAmountLowEventTimeout: init.dataChannelOptions?.bufferedAmountLowEventTimeout ?? BUFFERED_AMOUNT_LOW_TIMEOUT,
|
|
42
46
|
maxBufferedAmount: init.dataChannelOptions?.maxBufferedAmount ?? MAX_BUFFERED_AMOUNT,
|
|
43
|
-
maxMessageSize: init.dataChannelOptions?.maxMessageSize ??
|
|
47
|
+
maxMessageSize: init.dataChannelOptions?.maxMessageSize ?? init.maxDataSize
|
|
44
48
|
};
|
|
45
49
|
this.maxDataSize = init.maxDataSize;
|
|
46
50
|
// set up initial state
|
|
@@ -57,7 +61,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
57
61
|
// noop
|
|
58
62
|
break;
|
|
59
63
|
default:
|
|
60
|
-
log.error('unknown datachannel state %s', this.channel.readyState);
|
|
64
|
+
this.log.error('unknown datachannel state %s', this.channel.readyState);
|
|
61
65
|
throw new CodeError('Unknown datachannel state', 'ERR_INVALID_STATE');
|
|
62
66
|
}
|
|
63
67
|
// handle RTCDataChannel events
|
|
@@ -74,7 +78,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
74
78
|
};
|
|
75
79
|
this.channel.onclose = (_evt) => {
|
|
76
80
|
void this.close().catch(err => {
|
|
77
|
-
log.error('error closing stream after channel closed', err);
|
|
81
|
+
this.log.error('error closing stream after channel closed', err);
|
|
78
82
|
});
|
|
79
83
|
};
|
|
80
84
|
this.channel.onerror = (evt) => {
|
|
@@ -100,7 +104,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
100
104
|
}
|
|
101
105
|
})
|
|
102
106
|
.catch(err => {
|
|
103
|
-
log.error('error processing incoming data channel messages', err);
|
|
107
|
+
this.log.error('error processing incoming data channel messages', err);
|
|
104
108
|
});
|
|
105
109
|
}
|
|
106
110
|
sendNewStream() {
|
|
@@ -135,7 +139,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
135
139
|
this.messageQueue.append(data);
|
|
136
140
|
}
|
|
137
141
|
else {
|
|
138
|
-
log.error('unknown datachannel state %s', this.channel.readyState);
|
|
142
|
+
this.log.error('unknown datachannel state %s', this.channel.readyState);
|
|
139
143
|
throw new CodeError('Unknown datachannel state', 'ERR_INVALID_STATE');
|
|
140
144
|
}
|
|
141
145
|
}
|
|
@@ -182,7 +186,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
182
186
|
return message.message;
|
|
183
187
|
}
|
|
184
188
|
async _sendFlag(flag) {
|
|
185
|
-
log.trace('Sending flag: %s', flag.toString());
|
|
189
|
+
this.log.trace('Sending flag: %s', flag.toString());
|
|
186
190
|
const msgbuf = Message.encode({ flag });
|
|
187
191
|
const prefixedBuf = lengthPrefixed.encode.single(msgbuf);
|
|
188
192
|
await this._sendMessage(prefixedBuf, false);
|
|
@@ -193,7 +197,7 @@ export function createStream(options) {
|
|
|
193
197
|
return new WebRTCStream({
|
|
194
198
|
id: direction === 'inbound' ? (`i${channel.id}`) : `r${channel.id}`,
|
|
195
199
|
direction,
|
|
196
|
-
maxDataSize: (dataChannelOptions?.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD,
|
|
200
|
+
maxDataSize: (dataChannelOptions?.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD - VARINT_LENGTH,
|
|
197
201
|
dataChannelOptions,
|
|
198
202
|
onEnd,
|
|
199
203
|
channel,
|
package/dist/src/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,cAAc,EAA2B,MAAM,uCAAuC,CAAA;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAiB,QAAQ,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/webrtc",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.11-6cb80f7d",
|
|
4
4
|
"description": "A libp2p transport using WebRTC connections",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/transport-webrtc#readme",
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@chainsafe/libp2p-noise": "^13.0.0",
|
|
48
|
-
"@libp2p/interface": "
|
|
49
|
-
"@libp2p/interface-internal": "
|
|
50
|
-
"@libp2p/logger": "
|
|
51
|
-
"@libp2p/peer-id": "
|
|
48
|
+
"@libp2p/interface": "0.1.2-6cb80f7d",
|
|
49
|
+
"@libp2p/interface-internal": "0.1.5-6cb80f7d",
|
|
50
|
+
"@libp2p/logger": "3.0.2-6cb80f7d",
|
|
51
|
+
"@libp2p/peer-id": "3.0.2-6cb80f7d",
|
|
52
52
|
"@multiformats/mafmt": "^12.1.2",
|
|
53
53
|
"@multiformats/multiaddr": "^12.1.5",
|
|
54
54
|
"abortable-iterator": "^5.0.1",
|
|
@@ -70,18 +70,18 @@
|
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@chainsafe/libp2p-yamux": "^5.0.0",
|
|
73
|
-
"@libp2p/interface-compliance-tests": "
|
|
74
|
-
"@libp2p/peer-id-factory": "
|
|
75
|
-
"@libp2p/websockets": "
|
|
73
|
+
"@libp2p/interface-compliance-tests": "4.0.6-6cb80f7d",
|
|
74
|
+
"@libp2p/peer-id-factory": "3.0.4-6cb80f7d",
|
|
75
|
+
"@libp2p/websockets": "7.0.7-6cb80f7d",
|
|
76
76
|
"@types/sinon": "^10.0.15",
|
|
77
77
|
"aegir": "^40.0.8",
|
|
78
78
|
"delay": "^6.0.0",
|
|
79
79
|
"it-length": "^3.0.2",
|
|
80
80
|
"it-map": "^3.0.3",
|
|
81
81
|
"it-pair": "^2.0.6",
|
|
82
|
-
"libp2p": "
|
|
82
|
+
"libp2p": "0.46.11-6cb80f7d",
|
|
83
83
|
"protons": "^7.0.2",
|
|
84
|
-
"sinon": "^
|
|
84
|
+
"sinon": "^16.0.0",
|
|
85
85
|
"sinon-ts": "^1.0.0"
|
|
86
86
|
},
|
|
87
87
|
"browser": {
|
|
@@ -173,5 +173,5 @@ function parseRemoteAddress (sdp: string): string {
|
|
|
173
173
|
return '/webrtc'
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
return `/dnsaddr/${candidateParts[4]}/${candidateParts[2].toLowerCase()}/${candidateParts[
|
|
176
|
+
return `/dnsaddr/${candidateParts[4]}/${candidateParts[2].toLowerCase()}/${candidateParts[5]}/webrtc`
|
|
177
177
|
}
|
|
@@ -11,6 +11,7 @@ import { WebRTCPeerListener } from './listener.js'
|
|
|
11
11
|
import type { DataChannelOpts } from '../stream.js'
|
|
12
12
|
import type { Connection } from '@libp2p/interface/connection'
|
|
13
13
|
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
14
|
+
import type { CounterGroup, Metrics } from '@libp2p/interface/src/metrics/index.js'
|
|
14
15
|
import type { Startable } from '@libp2p/interface/startable'
|
|
15
16
|
import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar'
|
|
16
17
|
import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
|
|
@@ -32,15 +33,34 @@ export interface WebRTCTransportComponents {
|
|
|
32
33
|
registrar: Registrar
|
|
33
34
|
upgrader: Upgrader
|
|
34
35
|
transportManager: TransportManager
|
|
36
|
+
metrics?: Metrics
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface WebRTCTransportMetrics {
|
|
40
|
+
dialerEvents: CounterGroup
|
|
41
|
+
listenerEvents: CounterGroup
|
|
35
42
|
}
|
|
36
43
|
|
|
37
44
|
export class WebRTCTransport implements Transport, Startable {
|
|
38
45
|
private _started = false
|
|
46
|
+
private readonly metrics?: WebRTCTransportMetrics
|
|
39
47
|
|
|
40
48
|
constructor (
|
|
41
49
|
private readonly components: WebRTCTransportComponents,
|
|
42
50
|
private readonly init: WebRTCTransportInit = {}
|
|
43
51
|
) {
|
|
52
|
+
if (components.metrics != null) {
|
|
53
|
+
this.metrics = {
|
|
54
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_dialer_events_total', {
|
|
55
|
+
label: 'event',
|
|
56
|
+
help: 'Total count of WebRTC dialer events by type'
|
|
57
|
+
}),
|
|
58
|
+
listenerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_listener_events_total', {
|
|
59
|
+
label: 'event',
|
|
60
|
+
help: 'Total count of WebRTC listener events by type'
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
}
|
|
44
64
|
}
|
|
45
65
|
|
|
46
66
|
isStarted (): boolean {
|
|
@@ -93,6 +113,7 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
93
113
|
options.signal = controller.signal
|
|
94
114
|
}
|
|
95
115
|
|
|
116
|
+
this.metrics?.dialerEvents.increment({ open: true })
|
|
96
117
|
const connection = await this.components.transportManager.dial(baseAddr, options)
|
|
97
118
|
const signalingStream = await connection.newStream(SIGNALING_PROTO_ID, {
|
|
98
119
|
...options,
|
|
@@ -111,7 +132,8 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
111
132
|
new WebRTCMultiaddrConnection({
|
|
112
133
|
peerConnection: pc,
|
|
113
134
|
timeline: { open: Date.now() },
|
|
114
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`)
|
|
135
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`),
|
|
136
|
+
metrics: this.metrics?.dialerEvents
|
|
115
137
|
}),
|
|
116
138
|
{
|
|
117
139
|
skipProtection: true,
|
|
@@ -124,6 +146,7 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
124
146
|
await signalingStream.close()
|
|
125
147
|
return result
|
|
126
148
|
} catch (err: any) {
|
|
149
|
+
this.metrics?.dialerEvents.increment({ error: true })
|
|
127
150
|
// reset the stream in case of any error
|
|
128
151
|
signalingStream.abort(err)
|
|
129
152
|
throw err
|
|
@@ -145,7 +168,8 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
145
168
|
await this.components.upgrader.upgradeInbound(new WebRTCMultiaddrConnection({
|
|
146
169
|
peerConnection: pc,
|
|
147
170
|
timeline: { open: (new Date()).getTime() },
|
|
148
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`)
|
|
171
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`),
|
|
172
|
+
metrics: this.metrics?.listenerEvents
|
|
149
173
|
}), {
|
|
150
174
|
skipEncryption: true,
|
|
151
175
|
skipProtection: true,
|
|
@@ -67,9 +67,9 @@ export class WebRTCDirectTransport implements Transport {
|
|
|
67
67
|
this.init = init
|
|
68
68
|
if (components.metrics != null) {
|
|
69
69
|
this.metrics = {
|
|
70
|
-
dialerEvents: components.metrics.registerCounterGroup('
|
|
70
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {
|
|
71
71
|
label: 'event',
|
|
72
|
-
help: 'Total count of WebRTC dial events by type'
|
|
72
|
+
help: 'Total count of WebRTC-direct dial events by type'
|
|
73
73
|
})
|
|
74
74
|
}
|
|
75
75
|
}
|
package/src/stream.ts
CHANGED
|
@@ -8,8 +8,6 @@ import { Uint8ArrayList } from 'uint8arraylist'
|
|
|
8
8
|
import { Message } from './pb/message.js'
|
|
9
9
|
import type { Direction } from '@libp2p/interface/connection'
|
|
10
10
|
|
|
11
|
-
const log = logger('libp2p:webrtc:stream')
|
|
12
|
-
|
|
13
11
|
export interface DataChannelOpts {
|
|
14
12
|
maxMessageSize: number
|
|
15
13
|
maxBufferedAmount: number
|
|
@@ -31,16 +29,19 @@ export interface WebRTCStreamInit extends AbstractStreamInit {
|
|
|
31
29
|
}
|
|
32
30
|
|
|
33
31
|
// Max message size that can be sent to the DataChannel
|
|
34
|
-
const MAX_MESSAGE_SIZE = 16 * 1024
|
|
32
|
+
export const MAX_MESSAGE_SIZE = 16 * 1024
|
|
35
33
|
|
|
36
34
|
// How much can be buffered to the DataChannel at once
|
|
37
|
-
const MAX_BUFFERED_AMOUNT = 16 * 1024 * 1024
|
|
35
|
+
export const MAX_BUFFERED_AMOUNT = 16 * 1024 * 1024
|
|
38
36
|
|
|
39
37
|
// How long time we wait for the 'bufferedamountlow' event to be emitted
|
|
40
|
-
const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000
|
|
38
|
+
export const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000
|
|
41
39
|
|
|
42
40
|
// protobuf field definition overhead
|
|
43
|
-
const PROTOBUF_OVERHEAD =
|
|
41
|
+
export const PROTOBUF_OVERHEAD = 5
|
|
42
|
+
|
|
43
|
+
// Length of varint, in bytes.
|
|
44
|
+
export const VARINT_LENGTH = 2
|
|
44
45
|
|
|
45
46
|
export class WebRTCStream extends AbstractStream {
|
|
46
47
|
/**
|
|
@@ -60,6 +61,10 @@ export class WebRTCStream extends AbstractStream {
|
|
|
60
61
|
private readonly incomingData: Pushable<Uint8Array>
|
|
61
62
|
|
|
62
63
|
private messageQueue?: Uint8ArrayList
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The maximum size of a message in bytes
|
|
67
|
+
*/
|
|
63
68
|
private readonly maxDataSize: number
|
|
64
69
|
|
|
65
70
|
constructor (init: WebRTCStreamInit) {
|
|
@@ -72,7 +77,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
72
77
|
this.dataChannelOptions = {
|
|
73
78
|
bufferedAmountLowEventTimeout: init.dataChannelOptions?.bufferedAmountLowEventTimeout ?? BUFFERED_AMOUNT_LOW_TIMEOUT,
|
|
74
79
|
maxBufferedAmount: init.dataChannelOptions?.maxBufferedAmount ?? MAX_BUFFERED_AMOUNT,
|
|
75
|
-
maxMessageSize: init.dataChannelOptions?.maxMessageSize ??
|
|
80
|
+
maxMessageSize: init.dataChannelOptions?.maxMessageSize ?? init.maxDataSize
|
|
76
81
|
}
|
|
77
82
|
this.maxDataSize = init.maxDataSize
|
|
78
83
|
|
|
@@ -92,7 +97,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
92
97
|
break
|
|
93
98
|
|
|
94
99
|
default:
|
|
95
|
-
log.error('unknown datachannel state %s', this.channel.readyState)
|
|
100
|
+
this.log.error('unknown datachannel state %s', this.channel.readyState)
|
|
96
101
|
throw new CodeError('Unknown datachannel state', 'ERR_INVALID_STATE')
|
|
97
102
|
}
|
|
98
103
|
|
|
@@ -112,7 +117,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
112
117
|
|
|
113
118
|
this.channel.onclose = (_evt) => {
|
|
114
119
|
void this.close().catch(err => {
|
|
115
|
-
log.error('error closing stream after channel closed', err)
|
|
120
|
+
this.log.error('error closing stream after channel closed', err)
|
|
116
121
|
})
|
|
117
122
|
}
|
|
118
123
|
|
|
@@ -145,7 +150,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
145
150
|
}
|
|
146
151
|
})
|
|
147
152
|
.catch(err => {
|
|
148
|
-
log.error('error processing incoming data channel messages', err)
|
|
153
|
+
this.log.error('error processing incoming data channel messages', err)
|
|
149
154
|
})
|
|
150
155
|
}
|
|
151
156
|
|
|
@@ -183,7 +188,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
183
188
|
|
|
184
189
|
this.messageQueue.append(data)
|
|
185
190
|
} else {
|
|
186
|
-
log.error('unknown datachannel state %s', this.channel.readyState)
|
|
191
|
+
this.log.error('unknown datachannel state %s', this.channel.readyState)
|
|
187
192
|
throw new CodeError('Unknown datachannel state', 'ERR_INVALID_STATE')
|
|
188
193
|
}
|
|
189
194
|
}
|
|
@@ -242,7 +247,7 @@ export class WebRTCStream extends AbstractStream {
|
|
|
242
247
|
}
|
|
243
248
|
|
|
244
249
|
private async _sendFlag (flag: Message.Flag): Promise<void> {
|
|
245
|
-
log.trace('Sending flag: %s', flag.toString())
|
|
250
|
+
this.log.trace('Sending flag: %s', flag.toString())
|
|
246
251
|
const msgbuf = Message.encode({ flag })
|
|
247
252
|
const prefixedBuf = lengthPrefixed.encode.single(msgbuf)
|
|
248
253
|
|
|
@@ -277,7 +282,7 @@ export function createStream (options: WebRTCStreamOptions): WebRTCStream {
|
|
|
277
282
|
return new WebRTCStream({
|
|
278
283
|
id: direction === 'inbound' ? (`i${channel.id}`) : `r${channel.id}`,
|
|
279
284
|
direction,
|
|
280
|
-
maxDataSize: (dataChannelOptions?.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD,
|
|
285
|
+
maxDataSize: (dataChannelOptions?.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD - VARINT_LENGTH,
|
|
281
286
|
dataChannelOptions,
|
|
282
287
|
onEnd,
|
|
283
288
|
channel,
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"webRTC": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTC.html",
|
|
3
|
-
".:webRTC": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTC.html",
|
|
4
|
-
"webRTCDirect": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTCDirect.html",
|
|
5
|
-
".:webRTCDirect": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTCDirect.html"
|
|
6
|
-
}
|