@libp2p/webrtc 5.2.3 → 5.2.4-4939ef7ae
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/README.md +1 -1
- package/dist/index.min.js +7 -7
- package/dist/src/constants.d.ts +56 -2
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +75 -2
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +9 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/maconn.d.ts +1 -1
- package/dist/src/maconn.js +1 -1
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +4 -4
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +3 -2
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/listener.d.ts +4 -1
- package/dist/src/private-to-private/listener.d.ts.map +1 -1
- package/dist/src/private-to-private/listener.js +14 -2
- package/dist/src/private-to-private/listener.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +13 -4
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +19 -13
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/listener.d.ts +2 -0
- package/dist/src/private-to-public/listener.d.ts.map +1 -1
- package/dist/src/private-to-public/listener.js +20 -9
- package/dist/src/private-to-public/listener.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +2 -1
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +3 -3
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/private-to-public/utils/generate-noise-prologue.js +1 -1
- package/dist/src/private-to-public/utils/generate-noise-prologue.js.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js +1 -2
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js.map +1 -1
- package/dist/src/private-to-public/utils/sdp.d.ts +1 -1
- package/dist/src/private-to-public/utils/sdp.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/sdp.js +9 -10
- package/dist/src/private-to-public/utils/sdp.js.map +1 -1
- package/dist/src/stream.d.ts +0 -33
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +6 -56
- package/dist/src/stream.js.map +1 -1
- package/dist/src/util.d.ts +0 -1
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +1 -2
- package/dist/src/util.js.map +1 -1
- package/package.json +9 -9
- package/src/constants.ts +89 -2
- package/src/index.ts +10 -7
- package/src/maconn.ts +1 -1
- package/src/muxer.ts +4 -5
- package/src/private-to-private/initiate-connection.ts +3 -2
- package/src/private-to-private/listener.ts +20 -3
- package/src/private-to-private/transport.ts +33 -16
- package/src/private-to-public/listener.ts +25 -10
- package/src/private-to-public/transport.ts +6 -4
- package/src/private-to-public/utils/generate-noise-prologue.ts +1 -1
- package/src/private-to-public/utils/get-rtcpeerconnection.ts +1 -2
- package/src/private-to-public/utils/sdp.ts +9 -10
- package/src/stream.ts +6 -65
- package/src/util.ts +1 -3
- package/dist/typedoc-urls.json +0 -14
package/dist/src/stream.js
CHANGED
@@ -7,59 +7,9 @@ import pDefer from 'p-defer';
|
|
7
7
|
import pTimeout from 'p-timeout';
|
8
8
|
import { raceEvent } from 'race-event';
|
9
9
|
import { raceSignal } from 'race-signal';
|
10
|
-
import { encodingLength } from 'uint8-varint';
|
11
10
|
import { Uint8ArrayList } from 'uint8arraylist';
|
11
|
+
import { BUFFERED_AMOUNT_LOW_TIMEOUT, FIN_ACK_TIMEOUT, MAX_BUFFERED_AMOUNT, MAX_MESSAGE_SIZE, OPEN_TIMEOUT, PROTOBUF_OVERHEAD } from './constants.js';
|
12
12
|
import { Message } from './private-to-public/pb/message.js';
|
13
|
-
/**
|
14
|
-
* How much can be buffered to the DataChannel at once
|
15
|
-
*/
|
16
|
-
export const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024;
|
17
|
-
/**
|
18
|
-
* How long time we wait for the 'bufferedamountlow' event to be emitted
|
19
|
-
*/
|
20
|
-
export const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;
|
21
|
-
/**
|
22
|
-
* Max message size that can be sent to the DataChannel. In browsers this is
|
23
|
-
* 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of
|
24
|
-
* writing.
|
25
|
-
*
|
26
|
-
* @see https://blog.mozilla.org/webrtc/large-data-channel-messages/
|
27
|
-
* @see https://issues.webrtc.org/issues/40644524
|
28
|
-
*/
|
29
|
-
export const MAX_MESSAGE_SIZE = 16 * 1024;
|
30
|
-
/**
|
31
|
-
* max protobuf overhead:
|
32
|
-
*
|
33
|
-
* ```
|
34
|
-
* [message-length][flag-field-id+type][flag-field-length][flag-field][message-field-id+type][message-field-length][message-field]
|
35
|
-
* ```
|
36
|
-
*/
|
37
|
-
function calculateProtobufOverhead(maxMessageSize = MAX_MESSAGE_SIZE) {
|
38
|
-
// these have a fixed size
|
39
|
-
const messageLength = encodingLength(maxMessageSize - encodingLength(maxMessageSize));
|
40
|
-
const flagField = 1 + encodingLength(Object.keys(Message.Flag).length - 1); // id+type/value
|
41
|
-
const messageFieldIdType = 1; // id+type
|
42
|
-
const available = maxMessageSize - messageLength - flagField - messageFieldIdType;
|
43
|
-
// let message-length/message-data fill the rest of the message
|
44
|
-
const messageFieldLengthLength = encodingLength(available);
|
45
|
-
return messageLength + flagField + messageFieldIdType + messageFieldLengthLength;
|
46
|
-
}
|
47
|
-
/**
|
48
|
-
* The protobuf message overhead includes the maximum amount of all bytes in the
|
49
|
-
* protobuf that aren't message field bytes
|
50
|
-
*/
|
51
|
-
export const PROTOBUF_OVERHEAD = calculateProtobufOverhead();
|
52
|
-
/**
|
53
|
-
* When closing streams we send a FIN then wait for the remote to
|
54
|
-
* reply with a FIN_ACK. If that does not happen within this timeout
|
55
|
-
* we close the stream anyway.
|
56
|
-
*/
|
57
|
-
export const FIN_ACK_TIMEOUT = 5000;
|
58
|
-
/**
|
59
|
-
* When sending data messages, if the channel is not in the "open" state, wait
|
60
|
-
* this long for the "open" event to fire.
|
61
|
-
*/
|
62
|
-
export const OPEN_TIMEOUT = 5000;
|
63
13
|
export class WebRTCStream extends AbstractStream {
|
64
14
|
/**
|
65
15
|
* The data channel used to send and receive data
|
@@ -244,10 +194,10 @@ export class WebRTCStream extends AbstractStream {
|
|
244
194
|
while (data.byteLength > 0) {
|
245
195
|
const toSend = Math.min(data.byteLength, this.maxMessageSize);
|
246
196
|
const buf = data.subarray(0, toSend);
|
247
|
-
const
|
248
|
-
const
|
197
|
+
const messageBuf = Message.encode({ message: buf });
|
198
|
+
const sendBuf = lengthPrefixed.encode.single(messageBuf);
|
249
199
|
this.log.trace('-> sending message %s', this.channel.readyState);
|
250
|
-
await this._sendMessage(
|
200
|
+
await this._sendMessage(sendBuf);
|
251
201
|
this.log.trace('-> sent message %s', this.channel.readyState);
|
252
202
|
data.consume(toSend);
|
253
203
|
}
|
@@ -334,8 +284,8 @@ export class WebRTCStream extends AbstractStream {
|
|
334
284
|
return false;
|
335
285
|
}
|
336
286
|
this.log.trace('sending flag %s', flag.toString());
|
337
|
-
const
|
338
|
-
const prefixedBuf = lengthPrefixed.encode.single(
|
287
|
+
const messageBuf = Message.encode({ flag });
|
288
|
+
const prefixedBuf = lengthPrefixed.encode.single(messageBuf);
|
339
289
|
try {
|
340
290
|
await this._sendMessage(prefixedBuf, false);
|
341
291
|
return true;
|
package/dist/src/stream.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
package/dist/src/util.d.ts
CHANGED
@@ -4,7 +4,6 @@ import type { LoggerOptions } from '@libp2p/interface';
|
|
4
4
|
export declare const isFirefox: boolean;
|
5
5
|
export declare const nopSource: () => AsyncGenerator<Uint8Array, any, unknown>;
|
6
6
|
export declare const nopSink: (_: any) => Promise<void>;
|
7
|
-
export declare const DATA_CHANNEL_DRAIN_TIMEOUT: number;
|
8
7
|
export declare function drainAndClose(channel: RTCDataChannel, direction: string, drainTimeout: number | undefined, options: LoggerOptions): void;
|
9
8
|
export interface AbortPromiseOptions {
|
10
9
|
signal?: AbortSignal;
|
package/dist/src/util.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,eAAO,MAAM,SAAS,SAAoD,CAAA;AAE1E,eAAO,MAAM,SAAS,QAA4B,eAAe,UAAU,EAAE,GAAG,EAAE,OAAO,CAAI,CAAA;AAE7F,eAAO,MAAM,OAAO,MAAa,GAAG,KAAG,QAAQ,IAAI,CAAO,CAAA;AAE1D,
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,eAAO,MAAM,SAAS,SAAoD,CAAA;AAE1E,eAAO,MAAM,SAAS,QAA4B,eAAe,UAAU,EAAE,GAAG,EAAE,OAAO,CAAI,CAAA;AAE7F,eAAO,MAAM,OAAO,MAAa,GAAG,KAAG,QAAQ,IAAI,CAAO,CAAA;AAE1D,wBAAgB,aAAa,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,oBAAqC,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA8C1J;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,cAAc,CAEjE;AAED,wBAAsB,mBAAmB,CAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CActJ;AAED,eAAO,MAAM,QAAQ,SAAS,MAAM,KAAQ,MAE3C,CAAA"}
|
package/dist/src/util.js
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
import { detect } from 'detect-browser';
|
2
2
|
import pDefer from 'p-defer';
|
3
3
|
import pTimeout from 'p-timeout';
|
4
|
-
import { DEFAULT_ICE_SERVERS, UFRAG_ALPHABET, UFRAG_PREFIX } from './constants.js';
|
4
|
+
import { DATA_CHANNEL_DRAIN_TIMEOUT, DEFAULT_ICE_SERVERS, UFRAG_ALPHABET, UFRAG_PREFIX } from './constants.js';
|
5
5
|
const browser = detect();
|
6
6
|
export const isFirefox = ((browser != null) && browser.name === 'firefox');
|
7
7
|
export const nopSource = async function* nop() { };
|
8
8
|
export const nopSink = async (_) => { };
|
9
|
-
export const DATA_CHANNEL_DRAIN_TIMEOUT = 30 * 1000;
|
10
9
|
export function drainAndClose(channel, direction, drainTimeout = DATA_CHANNEL_DRAIN_TIMEOUT, options) {
|
11
10
|
if (channel.readyState !== 'open') {
|
12
11
|
return;
|
package/dist/src/util.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/webrtc",
|
3
|
-
"version": "5.2.
|
3
|
+
"version": "5.2.4-4939ef7ae",
|
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/main/packages/transport-webrtc#readme",
|
@@ -54,10 +54,10 @@
|
|
54
54
|
"@chainsafe/is-ip": "^2.0.2",
|
55
55
|
"@chainsafe/libp2p-noise": "^16.0.0",
|
56
56
|
"@ipshipyard/node-datachannel": "^0.26.4",
|
57
|
-
"@libp2p/interface": "
|
58
|
-
"@libp2p/interface-internal": "
|
59
|
-
"@libp2p/peer-id": "
|
60
|
-
"@libp2p/utils": "
|
57
|
+
"@libp2p/interface": "2.6.1-4939ef7ae",
|
58
|
+
"@libp2p/interface-internal": "2.3.5-4939ef7ae",
|
59
|
+
"@libp2p/peer-id": "5.0.14-4939ef7ae",
|
60
|
+
"@libp2p/utils": "6.5.5-4939ef7ae",
|
61
61
|
"@multiformats/multiaddr": "^12.4.0",
|
62
62
|
"@multiformats/multiaddr-matcher": "^1.6.0",
|
63
63
|
"@peculiar/webcrypto": "^1.5.0",
|
@@ -83,11 +83,11 @@
|
|
83
83
|
"uint8arrays": "^5.1.0"
|
84
84
|
},
|
85
85
|
"devDependencies": {
|
86
|
-
"@libp2p/crypto": "
|
87
|
-
"@libp2p/interface-compliance-tests": "
|
88
|
-
"@libp2p/logger": "
|
86
|
+
"@libp2p/crypto": "5.0.13-4939ef7ae",
|
87
|
+
"@libp2p/interface-compliance-tests": "6.3.5-4939ef7ae",
|
88
|
+
"@libp2p/logger": "5.1.10-4939ef7ae",
|
89
89
|
"@types/sinon": "^17.0.3",
|
90
|
-
"aegir": "^45.
|
90
|
+
"aegir": "^45.1.1",
|
91
91
|
"delay": "^6.0.0",
|
92
92
|
"it-length": "^3.0.6",
|
93
93
|
"it-pair": "^2.0.6",
|
package/src/constants.ts
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
import { encodingLength } from 'uint8-varint'
|
2
|
+
import { Message } from './private-to-public/pb/message.js'
|
3
|
+
|
1
4
|
/**
|
2
5
|
* STUN servers help clients discover their own public IPs.
|
3
6
|
*
|
@@ -13,13 +16,97 @@ export const DEFAULT_ICE_SERVERS = [
|
|
13
16
|
'stun:stun.services.mozilla.com:3478'
|
14
17
|
]
|
15
18
|
|
19
|
+
/**
|
20
|
+
* Characters that can be present in a ufrag
|
21
|
+
*/
|
16
22
|
export const UFRAG_ALPHABET = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890')
|
17
23
|
|
24
|
+
/**
|
25
|
+
* Used to detect the version of the WebRTC Direct connection protocol in use
|
26
|
+
*/
|
18
27
|
export const UFRAG_PREFIX = 'libp2p+webrtc+v1/'
|
19
28
|
|
20
29
|
/**
|
21
|
-
* The
|
30
|
+
* The multicodec code for webrtc-direct tuples
|
22
31
|
*/
|
23
|
-
export const HANDSHAKE_TIMEOUT_MS = 10_000
|
24
32
|
export const CODEC_WEBRTC_DIRECT = 0x0118
|
33
|
+
|
34
|
+
/**
|
35
|
+
* The multicodec code for certhash tuples
|
36
|
+
*/
|
25
37
|
export const CODEC_CERTHASH = 0x01d2
|
38
|
+
|
39
|
+
/**
|
40
|
+
* How much can be buffered to the DataChannel at once
|
41
|
+
*/
|
42
|
+
export const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024
|
43
|
+
|
44
|
+
/**
|
45
|
+
* How long time we wait for the 'bufferedamountlow' event to be emitted
|
46
|
+
*/
|
47
|
+
export const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Max message size that can be sent to the DataChannel. In browsers this is
|
51
|
+
* 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of
|
52
|
+
* writing.
|
53
|
+
*
|
54
|
+
* @see https://blog.mozilla.org/webrtc/large-data-channel-messages/
|
55
|
+
* @see https://issues.webrtc.org/issues/40644524
|
56
|
+
*/
|
57
|
+
export const MAX_MESSAGE_SIZE = 16 * 1024
|
58
|
+
|
59
|
+
/**
|
60
|
+
* max protobuf overhead:
|
61
|
+
*
|
62
|
+
* ```
|
63
|
+
* [message-length][flag-field-id+type][flag-field-length][flag-field][message-field-id+type][message-field-length][message-field]
|
64
|
+
* ```
|
65
|
+
*/
|
66
|
+
function calculateProtobufOverhead (maxMessageSize = MAX_MESSAGE_SIZE): number {
|
67
|
+
// these have a fixed size
|
68
|
+
const messageLength = encodingLength(maxMessageSize - encodingLength(maxMessageSize))
|
69
|
+
const flagField = 1 + encodingLength(Object.keys(Message.Flag).length - 1) // id+type/value
|
70
|
+
const messageFieldIdType = 1 // id+type
|
71
|
+
const available = maxMessageSize - messageLength - flagField - messageFieldIdType
|
72
|
+
|
73
|
+
// let message-length/message-data fill the rest of the message
|
74
|
+
const messageFieldLengthLength = encodingLength(available)
|
75
|
+
|
76
|
+
return messageLength + flagField + messageFieldIdType + messageFieldLengthLength
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* The protobuf message overhead includes the maximum amount of all bytes in the
|
81
|
+
* protobuf that aren't message field bytes
|
82
|
+
*/
|
83
|
+
export const PROTOBUF_OVERHEAD = calculateProtobufOverhead()
|
84
|
+
|
85
|
+
/**
|
86
|
+
* When closing streams we send a FIN then wait for the remote to
|
87
|
+
* reply with a FIN_ACK. If that does not happen within this timeout
|
88
|
+
* we close the stream anyway.
|
89
|
+
*/
|
90
|
+
export const FIN_ACK_TIMEOUT = 5_000
|
91
|
+
|
92
|
+
/**
|
93
|
+
* When sending data messages, if the channel is not in the "open" state, wait
|
94
|
+
* this long for the "open" event to fire.
|
95
|
+
*/
|
96
|
+
export const OPEN_TIMEOUT = 5_000
|
97
|
+
|
98
|
+
/**
|
99
|
+
* When closing a stream, we wait for `bufferedAmount` to become 0 before
|
100
|
+
* closing the underlying RTCDataChannel - this controls how long we wait in ms
|
101
|
+
*/
|
102
|
+
export const DATA_CHANNEL_DRAIN_TIMEOUT = 30_1000
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Set as the 'negotiated' muxer protocol name
|
106
|
+
*/
|
107
|
+
export const MUXER_PROTOCOL = '/webrtc'
|
108
|
+
|
109
|
+
/**
|
110
|
+
* The protocol used for the signalling stream protocol
|
111
|
+
*/
|
112
|
+
export const SIGNALING_PROTOCOL = '/webrtc-signaling/0.0.1'
|
package/src/index.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @packageDocumentation
|
3
3
|
*
|
4
|
-
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebRTC
|
4
|
+
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebRTC data channels](https://webrtc.org/).
|
5
5
|
*
|
6
6
|
* [WebRTC](https://www.w3.org/TR/webrtc/) is a specification that allows real-time communication between nodes - it's commonly used in browser video conferencing applications but it also provides a reliable data transport mechanism called [data channels](https://www.w3.org/TR/webrtc/#peer-to-peer-data-api) which libp2p uses to facilitate [protocol streams](https://docs.libp2p.io/concepts/multiplex/overview/) between peers.
|
7
7
|
*
|
@@ -215,9 +215,9 @@ import type { Transport } from '@libp2p/interface'
|
|
215
215
|
|
216
216
|
export interface DataChannelOptions {
|
217
217
|
/**
|
218
|
-
* The maximum message size
|
218
|
+
* The maximum message size to be sent over the channel in bytes
|
219
219
|
*
|
220
|
-
* @default
|
220
|
+
* @default 16_384
|
221
221
|
*/
|
222
222
|
maxMessageSize?: number
|
223
223
|
|
@@ -225,7 +225,7 @@ export interface DataChannelOptions {
|
|
225
225
|
* If the channel's `bufferedAmount` grows over this amount in bytes, wait
|
226
226
|
* for it to drain before sending more data
|
227
227
|
*
|
228
|
-
* @default
|
228
|
+
* @default 16_777_216
|
229
229
|
*/
|
230
230
|
maxBufferedAmount?: number
|
231
231
|
|
@@ -234,7 +234,7 @@ export interface DataChannelOptions {
|
|
234
234
|
* the `bufferedAmountLow` event fires - this controls how long we wait for
|
235
235
|
* that event in ms
|
236
236
|
*
|
237
|
-
* @default
|
237
|
+
* @default 30_000
|
238
238
|
*/
|
239
239
|
bufferedAmountLowEventTimeout?: number
|
240
240
|
|
@@ -243,7 +243,7 @@ export interface DataChannelOptions {
|
|
243
243
|
* closing the underlying RTCDataChannel - this controls how long we wait
|
244
244
|
* in ms
|
245
245
|
*
|
246
|
-
* @default
|
246
|
+
* @default 30_000
|
247
247
|
*/
|
248
248
|
drainTimeout?: number
|
249
249
|
|
@@ -252,13 +252,15 @@ export interface DataChannelOptions {
|
|
252
252
|
* for a FIN_ACK reply before closing the underlying RTCDataChannel - this
|
253
253
|
* controls how long we wait for the acknowledgement in ms
|
254
254
|
*
|
255
|
-
* @default
|
255
|
+
* @default 5_000
|
256
256
|
*/
|
257
257
|
closeTimeout?: number
|
258
258
|
|
259
259
|
/**
|
260
260
|
* When sending the first data message, if the channel is not in the "open"
|
261
261
|
* state, wait this long for the "open" event to fire.
|
262
|
+
*
|
263
|
+
* @default 5_000
|
262
264
|
*/
|
263
265
|
openTimeout?: number
|
264
266
|
}
|
@@ -271,6 +273,7 @@ export interface TransportCertificate {
|
|
271
273
|
* The private key for the certificate in PEM format
|
272
274
|
*/
|
273
275
|
privateKey: string
|
276
|
+
|
274
277
|
/**
|
275
278
|
* PEM format certificate
|
276
279
|
*/
|
package/src/maconn.ts
CHANGED
package/src/muxer.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { MUXER_PROTOCOL } from './constants.js'
|
1
2
|
import { createStream } from './stream.js'
|
2
3
|
import { drainAndClose, nopSink, nopSource } from './util.js'
|
3
4
|
import type { DataChannelOptions } from './index.js'
|
@@ -7,8 +8,6 @@ import type { AbortOptions } from '@multiformats/multiaddr'
|
|
7
8
|
import type { Source, Sink } from 'it-stream-types'
|
8
9
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
9
10
|
|
10
|
-
const PROTOCOL = '/webrtc'
|
11
|
-
|
12
11
|
export interface DataChannelMuxerFactoryInit {
|
13
12
|
/**
|
14
13
|
* WebRTC Peer Connection
|
@@ -55,11 +54,11 @@ export class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
55
54
|
this.components = components
|
56
55
|
this.peerConnection = init.peerConnection
|
57
56
|
this.metrics = init.metrics
|
58
|
-
this.protocol = init.protocol ??
|
57
|
+
this.protocol = init.protocol ?? MUXER_PROTOCOL
|
59
58
|
this.dataChannelOptions = init.dataChannelOptions ?? {}
|
60
59
|
this.log = components.logger.forComponent('libp2p:webrtc:muxerfactory')
|
61
60
|
|
62
|
-
// store any
|
61
|
+
// store any data channels opened before upgrade has been completed
|
63
62
|
this.peerConnection.ondatachannel = ({ channel }) => {
|
64
63
|
this.log.trace('incoming early datachannel with channel id %d and label "%s"', channel.id)
|
65
64
|
|
@@ -135,7 +134,7 @@ export class DataChannelMuxer implements StreamMuxer {
|
|
135
134
|
this.logger = components.logger
|
136
135
|
this.streams = init.streams.map(s => s.stream)
|
137
136
|
this.peerConnection = init.peerConnection
|
138
|
-
this.protocol = init.protocol ??
|
137
|
+
this.protocol = init.protocol ?? MUXER_PROTOCOL
|
139
138
|
this.metrics = init.metrics
|
140
139
|
this.dataChannelOptions = init.dataChannelOptions ?? {}
|
141
140
|
|
@@ -2,11 +2,12 @@ import { InvalidParametersError } from '@libp2p/interface'
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
3
3
|
import { pbStream } from 'it-protobuf-stream'
|
4
4
|
import { CustomProgressEvent } from 'progress-events'
|
5
|
+
import { SIGNALING_PROTOCOL } from '../constants.js'
|
5
6
|
import { SDPHandshakeFailedError } from '../error.js'
|
6
7
|
import { DataChannelMuxerFactory } from '../muxer.js'
|
7
8
|
import { RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js'
|
8
9
|
import { Message } from './pb/message.js'
|
9
|
-
import {
|
10
|
+
import { splitAddr, type WebRTCDialEvents, type WebRTCTransportMetrics } from './transport.js'
|
10
11
|
import { readCandidatesUntilConnected } from './util.js'
|
11
12
|
import type { DataChannelOptions } from '../index.js'
|
12
13
|
import type { LoggerOptions, Connection, ComponentLogger, IncomingStreamData } from '@libp2p/interface'
|
@@ -71,7 +72,7 @@ export async function initiateConnection ({ rtcConfiguration, dataChannel, signa
|
|
71
72
|
try {
|
72
73
|
onProgress?.(new CustomProgressEvent('webrtc:open-signaling-stream'))
|
73
74
|
|
74
|
-
const stream = await connection.newStream(
|
75
|
+
const stream = await connection.newStream(SIGNALING_PROTOCOL, {
|
75
76
|
signal,
|
76
77
|
runOnLimitedConnection: true
|
77
78
|
})
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { TypedEventEmitter } from '@libp2p/interface'
|
2
2
|
import { P2P } from '@multiformats/multiaddr-matcher'
|
3
3
|
import { fmt, literal } from '@multiformats/multiaddr-matcher/utils'
|
4
|
-
import type { PeerId, ListenerEvents, Listener } from '@libp2p/interface'
|
4
|
+
import type { PeerId, ListenerEvents, Listener, Libp2pEvents, TypedEventTarget } from '@libp2p/interface'
|
5
5
|
import type { TransportManager } from '@libp2p/interface-internal'
|
6
6
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
7
7
|
|
@@ -10,6 +10,7 @@ const Circuit = fmt(P2P.matchers[0], literal('p2p-circuit'))
|
|
10
10
|
export interface WebRTCPeerListenerComponents {
|
11
11
|
peerId: PeerId
|
12
12
|
transportManager: TransportManager
|
13
|
+
events: TypedEventTarget<Libp2pEvents>
|
13
14
|
}
|
14
15
|
|
15
16
|
export interface WebRTCPeerListenerInit {
|
@@ -19,18 +20,32 @@ export interface WebRTCPeerListenerInit {
|
|
19
20
|
export class WebRTCPeerListener extends TypedEventEmitter<ListenerEvents> implements Listener {
|
20
21
|
private readonly transportManager: TransportManager
|
21
22
|
private readonly shutdownController: AbortController
|
23
|
+
private readonly events: TypedEventTarget<Libp2pEvents>
|
22
24
|
|
23
25
|
constructor (components: WebRTCPeerListenerComponents, init: WebRTCPeerListenerInit) {
|
24
26
|
super()
|
25
27
|
|
26
28
|
this.transportManager = components.transportManager
|
29
|
+
this.events = components.events
|
27
30
|
this.shutdownController = init.shutdownController
|
31
|
+
|
32
|
+
this.onTransportListening = this.onTransportListening.bind(this)
|
28
33
|
}
|
29
34
|
|
30
35
|
async listen (): Promise<void> {
|
31
|
-
|
36
|
+
this.events.addEventListener('transport:listening', this.onTransportListening)
|
37
|
+
}
|
38
|
+
|
39
|
+
onTransportListening (event: CustomEvent<Listener>): void {
|
40
|
+
const circuitAddresses = event.detail.getAddrs()
|
41
|
+
.filter(ma => Circuit.exactMatch(ma))
|
42
|
+
.map(ma => {
|
43
|
+
return ma.encapsulate('/webrtc')
|
44
|
+
})
|
45
|
+
|
46
|
+
if (circuitAddresses.length > 0) {
|
32
47
|
this.safeDispatchEvent('listening')
|
33
|
-
}
|
48
|
+
}
|
34
49
|
}
|
35
50
|
|
36
51
|
getAddrs (): Multiaddr[] {
|
@@ -51,6 +66,8 @@ export class WebRTCPeerListener extends TypedEventEmitter<ListenerEvents> implem
|
|
51
66
|
}
|
52
67
|
|
53
68
|
async close (): Promise<void> {
|
69
|
+
this.events.removeEventListener('transport:listening', this.onTransportListening)
|
70
|
+
|
54
71
|
this.shutdownController.abort()
|
55
72
|
queueMicrotask(() => {
|
56
73
|
this.safeDispatchEvent('close')
|
@@ -2,6 +2,7 @@ import { InvalidParametersError, serviceCapabilities, serviceDependencies, setMa
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
3
3
|
import { multiaddr, type Multiaddr } from '@multiformats/multiaddr'
|
4
4
|
import { WebRTC } from '@multiformats/multiaddr-matcher'
|
5
|
+
import { SIGNALING_PROTOCOL } from '../constants.js'
|
5
6
|
import { WebRTCMultiaddrConnection } from '../maconn.js'
|
6
7
|
import { DataChannelMuxerFactory } from '../muxer.js'
|
7
8
|
import { getRtcConfiguration } from '../util.js'
|
@@ -10,23 +11,28 @@ import { initiateConnection } from './initiate-connection.js'
|
|
10
11
|
import { WebRTCPeerListener } from './listener.js'
|
11
12
|
import { handleIncomingStream } from './signaling-stream-handler.js'
|
12
13
|
import type { DataChannelOptions } from '../index.js'
|
13
|
-
import type { OutboundConnectionUpgradeEvents, CreateListenerOptions, DialTransportOptions, Transport, Listener, Upgrader, ComponentLogger, Logger, Connection, PeerId, CounterGroup, Metrics, Startable, OpenConnectionProgressEvents, IncomingStreamData } from '@libp2p/interface'
|
14
|
+
import type { OutboundConnectionUpgradeEvents, CreateListenerOptions, DialTransportOptions, Transport, Listener, Upgrader, ComponentLogger, Logger, Connection, PeerId, CounterGroup, Metrics, Startable, OpenConnectionProgressEvents, IncomingStreamData, Libp2pEvents, TypedEventTarget } from '@libp2p/interface'
|
14
15
|
import type { Registrar, ConnectionManager, TransportManager } from '@libp2p/interface-internal'
|
15
16
|
import type { ProgressEvent } from 'progress-events'
|
16
17
|
|
17
|
-
const WEBRTC_TRANSPORT = '/webrtc'
|
18
|
-
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit'
|
19
|
-
export const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1'
|
20
|
-
const INBOUND_CONNECTION_TIMEOUT = 30 * 1000
|
21
|
-
|
22
18
|
export interface WebRTCTransportInit {
|
19
|
+
/**
|
20
|
+
* Add additional configuration to any RTCPeerConnections that are created.
|
21
|
+
*
|
22
|
+
* This could be extra STUN/TURN servers, certificate, etc.
|
23
|
+
*/
|
23
24
|
rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>)
|
25
|
+
|
26
|
+
/**
|
27
|
+
* Any options here will be applied to any RTCDataChannels that are opened.
|
28
|
+
*/
|
24
29
|
dataChannel?: DataChannelOptions
|
25
30
|
|
26
31
|
/**
|
27
32
|
* Inbound connections must complete the upgrade within this many ms
|
28
33
|
*
|
29
|
-
* @default
|
34
|
+
* @default 30_000
|
35
|
+
* @deprecated configure `connectionManager.inboundUpgradeTimeout` instead
|
30
36
|
*/
|
31
37
|
inboundConnectionTimeout?: number
|
32
38
|
}
|
@@ -39,6 +45,7 @@ export interface WebRTCTransportComponents {
|
|
39
45
|
connectionManager: ConnectionManager
|
40
46
|
metrics?: Metrics
|
41
47
|
logger: ComponentLogger
|
48
|
+
events: TypedEventTarget<Libp2pEvents>
|
42
49
|
}
|
43
50
|
|
44
51
|
export interface WebRTCTransportMetrics {
|
@@ -105,8 +112,17 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
105
112
|
}
|
106
113
|
|
107
114
|
async start (): Promise<void> {
|
108
|
-
await this.components.registrar.handle(
|
109
|
-
|
115
|
+
await this.components.registrar.handle(SIGNALING_PROTOCOL, (data: IncomingStreamData) => {
|
116
|
+
// ensure we don't try to upgrade forever
|
117
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal)
|
118
|
+
|
119
|
+
this._onProtocol(data, signal)
|
120
|
+
.catch(err => {
|
121
|
+
this.log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err)
|
122
|
+
})
|
123
|
+
.finally(() => {
|
124
|
+
signal.clear()
|
125
|
+
})
|
110
126
|
}, {
|
111
127
|
runOnLimitedConnection: true
|
112
128
|
})
|
@@ -114,7 +130,7 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
114
130
|
}
|
115
131
|
|
116
132
|
async stop (): Promise<void> {
|
117
|
-
await this.components.registrar.unhandle(
|
133
|
+
await this.components.registrar.unhandle(SIGNALING_PROTOCOL)
|
118
134
|
this._started = false
|
119
135
|
}
|
120
136
|
|
@@ -172,7 +188,8 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
172
188
|
skipProtection: true,
|
173
189
|
skipEncryption: true,
|
174
190
|
muxerFactory,
|
175
|
-
onProgress: options.onProgress
|
191
|
+
onProgress: options.onProgress,
|
192
|
+
signal: options.signal
|
176
193
|
})
|
177
194
|
|
178
195
|
// close the connection on shut down
|
@@ -181,8 +198,7 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
181
198
|
return connection
|
182
199
|
}
|
183
200
|
|
184
|
-
async _onProtocol ({ connection, stream }: IncomingStreamData): Promise<void> {
|
185
|
-
const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT)
|
201
|
+
async _onProtocol ({ connection, stream }: IncomingStreamData, signal: AbortSignal): Promise<void> {
|
186
202
|
const peerConnection = new RTCPeerConnection(await getRtcConfiguration(this.init.rtcConfiguration))
|
187
203
|
const muxerFactory = new DataChannelMuxerFactory(this.components, {
|
188
204
|
peerConnection,
|
@@ -213,7 +229,8 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
213
229
|
await this.components.upgrader.upgradeInbound(webRTCConn, {
|
214
230
|
skipEncryption: true,
|
215
231
|
skipProtection: true,
|
216
|
-
muxerFactory
|
232
|
+
muxerFactory,
|
233
|
+
signal
|
217
234
|
})
|
218
235
|
|
219
236
|
// close the connection on shut down
|
@@ -245,12 +262,12 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
245
262
|
}
|
246
263
|
|
247
264
|
export function splitAddr (ma: Multiaddr): { baseAddr: Multiaddr, peerId: PeerId } {
|
248
|
-
const addrs = ma.toString().split(
|
265
|
+
const addrs = ma.toString().split('/webrtc/')
|
249
266
|
if (addrs.length !== 2) {
|
250
267
|
throw new InvalidParametersError('webrtc protocol was not present in multiaddr')
|
251
268
|
}
|
252
269
|
|
253
|
-
if (!addrs[0].includes(
|
270
|
+
if (!addrs[0].includes('/p2p-circuit')) {
|
254
271
|
throw new InvalidParametersError('p2p-circuit protocol was not present in multiaddr')
|
255
272
|
}
|
256
273
|
|