webpeerjs 0.0.4 → 0.0.5
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/esm/webpeerjs.js +115 -310
- package/dist/umd/webpeerjs.js +7872 -4856
- package/package.json +1 -1
- package/src/config.js +4 -254
- package/src/utils.js +14 -8
- package/src/webpeerjs.js +85 -31
package/dist/esm/webpeerjs.js
CHANGED
|
@@ -2,6 +2,7 @@ import { message, encodeMessage, decodeMessage } from 'protons-runtime';
|
|
|
2
2
|
import { alloc } from 'uint8arrays/alloc';
|
|
3
3
|
import { Key } from 'interface-datastore';
|
|
4
4
|
import { sha256 } from 'multiformats/hashes/sha2';
|
|
5
|
+
import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client';
|
|
5
6
|
import { createLibp2p } from 'libp2p';
|
|
6
7
|
import { IDBDatastore } from 'datastore-idb';
|
|
7
8
|
import { webTransport } from '@libp2p/webtransport';
|
|
@@ -12,274 +13,26 @@ import { circuitRelayTransport } from '@libp2p/circuit-relay-v2';
|
|
|
12
13
|
import { gossipsub } from '@chainsafe/libp2p-gossipsub';
|
|
13
14
|
import { identify, identifyPush } from '@libp2p/identify';
|
|
14
15
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
16
|
+
import { peerIdFromString } from '@libp2p/peer-id';
|
|
15
17
|
import { kadDHT, removePrivateAddressesMapper } from '@libp2p/kad-dht';
|
|
16
18
|
import { simpleMetrics } from '@libp2p/simple-metrics';
|
|
17
19
|
|
|
18
20
|
const prefix$1 = 'webpeerjs';
|
|
19
21
|
const CONFIG_PREFIX = prefix$1;
|
|
20
22
|
const CONFIG_DBSTORE_PATH = prefix$1+'-dbstore';
|
|
21
|
-
const CONFIG_MAX_CONNECTIONS =
|
|
23
|
+
const CONFIG_MAX_CONNECTIONS = 100;
|
|
22
24
|
const CONFIG_MIN_CONNECTIONS = 0;
|
|
23
|
-
const CONFIG_DISCOVER_RELAYS =
|
|
25
|
+
const CONFIG_DISCOVER_RELAYS = 1;
|
|
24
26
|
const CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY = 'universal-connectivity-browser-peer-discovery';
|
|
25
|
-
const
|
|
27
|
+
const CONFIG_PEER_DISCOVERY_GLOBAL = '_peer-discovery._p2p._pubsub';
|
|
28
|
+
const CONFIG_PUBSUB_PEER_DISCOVERY = [CONFIG_PEER_DISCOVERY_GLOBAL,CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY,prefix$1+'-peer-discovery'];
|
|
29
|
+
const CONFIG_DELEGATED_API = 'https://delegated-ipfs.dev';
|
|
26
30
|
|
|
27
31
|
const CONFIG_KNOWN_BOOTSTRAP_PEERS_ADDRS = [
|
|
28
|
-
{
|
|
29
|
-
"Peers": [
|
|
30
|
-
{
|
|
31
|
-
"Addrs": [
|
|
32
|
-
"/ip4/147.28.186.157/udp/9091/quic-v1",
|
|
33
|
-
"/ip4/147.28.186.157/udp/9090/webrtc-direct/certhash/uEiBbC9bbdvraVWDvcvCEdJAWDymmUqiJQ964FuyEq0hELw"
|
|
34
|
-
],
|
|
35
|
-
"ID": "12D3KooWGahRw3ZnM4gAyd9FK75v4Bp5keFYTvkcAwhpEm28wbV3",
|
|
36
|
-
"Schema": "peer"
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"Peers": [
|
|
42
|
-
{
|
|
43
|
-
"Addrs": [
|
|
44
|
-
"/ip6/2604:1380:4642:6600::3/udp/9095/quic-v1/webtransport/certhash/uEiCU6MjDlUhqtik_vc8Ps5_MJtGhJKn-XSqvuzn8SJGL9A/certhash/uEiDlk15VyYoXwTaB608Y80ch3OptpMiKFblYdduSVLy2sQ",
|
|
45
|
-
"/ip4/147.28.186.157/udp/9095/quic-v1",
|
|
46
|
-
"/ip6/2604:1380:4642:6600::3/udp/9095/quic-v1",
|
|
47
|
-
"/ip4/147.28.186.157/udp/9095/quic-v1/webtransport/certhash/uEiCU6MjDlUhqtik_vc8Ps5_MJtGhJKn-XSqvuzn8SJGL9A/certhash/uEiDlk15VyYoXwTaB608Y80ch3OptpMiKFblYdduSVLy2sQ"
|
|
48
|
-
],
|
|
49
|
-
"ID": "12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr",
|
|
50
|
-
"Schema": "peer"
|
|
51
|
-
}
|
|
52
|
-
]
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"Peers": [
|
|
56
|
-
{
|
|
57
|
-
"Addrs": [
|
|
58
|
-
"/ip6/2607:f2f8:a880:0:5054:ff:fe9f:4913/udp/4001/quic-v1/webtransport/certhash/uEiD84ZvAnGWTQx_WlOAqreebO036a5RRB5zfJBo9QJfDBA/certhash/uEiAOMkIVxeNye76-f5ADnLCSNqNlnhOYdkwyRlqLFbhIkQ",
|
|
59
|
-
"/ip6/2607:f2f8:a880::70/udp/4001/quic-v1/webtransport/certhash/uEiD84ZvAnGWTQx_WlOAqreebO036a5RRB5zfJBo9QJfDBA/certhash/uEiAOMkIVxeNye76-f5ADnLCSNqNlnhOYdkwyRlqLFbhIkQ",
|
|
60
|
-
"/ip6/2607:f2f8:a880:0:5054:ff:fe9f:4913/tcp/4001",
|
|
61
|
-
"/ip6/2607:f2f8:a880:0:5054:ff:fe9f:4913/udp/4001/quic-v1",
|
|
62
|
-
"/ip4/174.136.97.180/udp/4001/quic-v1/webtransport/certhash/uEiD84ZvAnGWTQx_WlOAqreebO036a5RRB5zfJBo9QJfDBA/certhash/uEiAOMkIVxeNye76-f5ADnLCSNqNlnhOYdkwyRlqLFbhIkQ",
|
|
63
|
-
"/ip4/174.136.97.180/udp/4001/quic-v1",
|
|
64
|
-
"/ip6/2607:f2f8:a880::70/udp/4001/quic-v1",
|
|
65
|
-
"/ip4/174.136.97.180/tcp/4001"
|
|
66
|
-
],
|
|
67
|
-
"ID": "12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV",
|
|
68
|
-
"Schema": "peer"
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"Peers": [
|
|
74
|
-
{
|
|
75
|
-
"Addrs": [
|
|
76
|
-
"/ip4/174.136.97.179/udp/4001/quic-v1",
|
|
77
|
-
"/ip6/2607:f2f8:a880::50/udp/4002/quic-v1/webtransport/certhash/uEiBF7KOka9hhb2IjhUd-OkfgTFOf-VpgV7fwvMkKOkMrdQ/certhash/uEiDxVhDwzFlnorujU_rjTnO_TTLRMlXxzPLEgaG-1xOPkA",
|
|
78
|
-
"/ip4/174.136.97.179/udp/4001/quic-v1/webtransport/certhash/uEiBF7KOka9hhb2IjhUd-OkfgTFOf-VpgV7fwvMkKOkMrdQ/certhash/uEiDxVhDwzFlnorujU_rjTnO_TTLRMlXxzPLEgaG-1xOPkA",
|
|
79
|
-
"/ip6/2607:f2f8:a880::50/udp/4001/quic-v1",
|
|
80
|
-
"/ip4/174.136.97.179/udp/4002/quic-v1/webtransport/certhash/uEiBF7KOka9hhb2IjhUd-OkfgTFOf-VpgV7fwvMkKOkMrdQ/certhash/uEiDxVhDwzFlnorujU_rjTnO_TTLRMlXxzPLEgaG-1xOPkA",
|
|
81
|
-
"/ip6/2607:f2f8:a880::50/tcp/4001",
|
|
82
|
-
"/ip6/2607:f2f8:a880::50/udp/4001/quic-v1/webtransport/certhash/uEiBF7KOka9hhb2IjhUd-OkfgTFOf-VpgV7fwvMkKOkMrdQ/certhash/uEiDxVhDwzFlnorujU_rjTnO_TTLRMlXxzPLEgaG-1xOPkA",
|
|
83
|
-
"/ip4/174.136.97.179/tcp/4001"
|
|
84
|
-
],
|
|
85
|
-
"ID": "12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP",
|
|
86
|
-
"Schema": "peer"
|
|
87
|
-
}
|
|
88
|
-
]
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"Peers": [
|
|
92
|
-
{
|
|
93
|
-
"Addrs": [
|
|
94
|
-
"/ip6/2a03:4000:46:26e::c17/udp/443/quic-v1/webtransport/certhash/uEiAortGu7HNi8-pV9onPFkTwykrnWuJEqYf7zbQVE1FEtg/certhash/uEiB5Z8j3pdTJU_TDYoJ-GgUQSaXOmvKIGmASL9s-p3VHQA",
|
|
95
|
-
"/ip4/45.83.104.156/udp/443/quic-v1",
|
|
96
|
-
"/ip4/45.83.104.156/udp/443/quic-v1/webtransport/certhash/uEiAortGu7HNi8-pV9onPFkTwykrnWuJEqYf7zbQVE1FEtg/certhash/uEiB5Z8j3pdTJU_TDYoJ-GgUQSaXOmvKIGmASL9s-p3VHQA",
|
|
97
|
-
"/ip6/2a03:4000:46:26e::c17/tcp/443",
|
|
98
|
-
"/ip6/2a03:4000:46:26e::c17/udp/443/quic-v1",
|
|
99
|
-
"/ip4/45.83.104.156/tcp/443"
|
|
100
|
-
],
|
|
101
|
-
"ID": "12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr",
|
|
102
|
-
"Schema": "peer"
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"Peers": [
|
|
108
|
-
{
|
|
109
|
-
"Addrs": [
|
|
110
|
-
"/ip4/139.178.91.71/udp/4001/quic-v1",
|
|
111
|
-
"/ip6/2604:1380:45e3:6e00::1/tcp/4001",
|
|
112
|
-
"/ip4/139.178.91.71/tcp/4001",
|
|
113
|
-
"/ip4/139.178.91.71/udp/4001/quic-v1/webtransport/certhash/uEiDYGZMqjz8wsz59DHA4iJin4nqTUfuJhq9AeAZlHBrmvg/certhash/uEiBXLv0dkEqbhmcinRbwj8b_3vWs0kWwf1-fiaz5wS-tew",
|
|
114
|
-
"/ip6/2604:1380:45e3:6e00::1/udp/4001/quic-v1/webtransport/certhash/uEiDYGZMqjz8wsz59DHA4iJin4nqTUfuJhq9AeAZlHBrmvg/certhash/uEiBXLv0dkEqbhmcinRbwj8b_3vWs0kWwf1-fiaz5wS-tew",
|
|
115
|
-
"/dnsaddr/bootstrap.libp2p.io",
|
|
116
|
-
"/dns6/sv15.bootstrap.libp2p.io/tcp/443/wss",
|
|
117
|
-
"/ip6/2604:1380:45e3:6e00::1/udp/4001/quic-v1",
|
|
118
|
-
"/ip4/139.178.91.71/tcp/443/tls/sni/sv15.bootstrap.libp2p.io/ws",
|
|
119
|
-
"/ip6/2604:1380:45e3:6e00::1/tcp/443/tls/sni/sv15.bootstrap.libp2p.io/ws",
|
|
120
|
-
"/dns4/sv15.bootstrap.libp2p.io/tcp/443/wss"
|
|
121
|
-
],
|
|
122
|
-
"ID": "QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
|
|
123
|
-
"Schema": "peer"
|
|
124
|
-
}
|
|
125
|
-
]
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"Peers": [
|
|
129
|
-
{
|
|
130
|
-
"Addrs": [
|
|
131
|
-
"/ip4/139.178.65.157/udp/4001/quic-v1",
|
|
132
|
-
"/dns6/ny5.bootstrap.libp2p.io/tcp/443/wss",
|
|
133
|
-
"/ip6/2604:1380:45d2:8100::1/tcp/4001",
|
|
134
|
-
"/dns4/ny5.bootstrap.libp2p.io/tcp/443/wss",
|
|
135
|
-
"/ip4/139.178.65.157/tcp/4001",
|
|
136
|
-
"/ip6/2604:1380:45d2:8100::1/udp/4001/quic-v1"
|
|
137
|
-
],
|
|
138
|
-
"ID": "QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
|
|
139
|
-
"Schema": "peer"
|
|
140
|
-
}
|
|
141
|
-
]
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
"Peers": [
|
|
145
|
-
{
|
|
146
|
-
"Addrs": [
|
|
147
|
-
"/dns4/am6.bootstrap.libp2p.io/tcp/443/wss",
|
|
148
|
-
"/ip6/2604:1380:4602:5c00::3/udp/4001/quic-v1/webtransport/certhash/uEiD3Q2mfd5EYt6Y2M9rsge_nna4hVyCgUVlfSz3IjAK8ew/certhash/uEiAHt8JR08mlUCCGnN8VpqG9G4sfvdjAd0v5ZM5W1lqntw",
|
|
149
|
-
"/ip6/2604:1380:4602:5c00::3/tcp/4001",
|
|
150
|
-
"/ip4/147.75.87.27/udp/4001/quic-v1",
|
|
151
|
-
"/ip6/2604:1380:4602:5c00::3/udp/4001/quic-v1",
|
|
152
|
-
"/ip4/147.75.87.27/tcp/4001",
|
|
153
|
-
"/dns6/am6.bootstrap.libp2p.io/tcp/443/wss",
|
|
154
|
-
"/ip4/147.75.87.27/udp/4001/quic-v1/webtransport/certhash/uEiD3Q2mfd5EYt6Y2M9rsge_nna4hVyCgUVlfSz3IjAK8ew/certhash/uEiAHt8JR08mlUCCGnN8VpqG9G4sfvdjAd0v5ZM5W1lqntw"
|
|
155
|
-
],
|
|
156
|
-
"ID": "QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
|
|
157
|
-
"Schema": "peer"
|
|
158
|
-
}
|
|
159
|
-
]
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"Peers": [
|
|
163
|
-
{
|
|
164
|
-
"Addrs": [
|
|
165
|
-
"/ip6/2604:1380:40e1:9c00::1/udp/4001/quic-v1/webtransport/certhash/uEiBENNd9IIPnU1cTGoVATo6cly-O2fQAjKpIyFi0msoJew/certhash/uEiD8N0sSnHOUIsKxz4pDuVqx4szt-huTZWafW_EY19H7MQ",
|
|
166
|
-
"/ip6/2604:1380:40e1:9c00::1/tcp/4001",
|
|
167
|
-
"/dnsaddr/bootstrap.libp2p.io",
|
|
168
|
-
"/ip4/145.40.118.135/udp/4001/quic-v1/webtransport/certhash/uEiBENNd9IIPnU1cTGoVATo6cly-O2fQAjKpIyFi0msoJew/certhash/uEiD8N0sSnHOUIsKxz4pDuVqx4szt-huTZWafW_EY19H7MQ",
|
|
169
|
-
"/ip4/145.40.118.135/udp/4001/quic-v1",
|
|
170
|
-
"/dns4/sg1.bootstrap.libp2p.io/tcp/443/wss",
|
|
171
|
-
"/ip6/2604:1380:40e1:9c00::1/udp/4001/quic-v1",
|
|
172
|
-
"/ip4/145.40.118.135/tcp/4001",
|
|
173
|
-
"/dns6/sg1.bootstrap.libp2p.io/tcp/443/wss",
|
|
174
|
-
"/ip4/145.40.118.135/tcp/443/tls/sni/sg1.bootstrap.libp2p.io/ws",
|
|
175
|
-
"/ip6/2604:1380:40e1:9c00::1/tcp/443/tls/sni/sg1.bootstrap.libp2p.io/ws"
|
|
176
|
-
],
|
|
177
|
-
"ID": "QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
|
|
178
|
-
"Schema": "peer"
|
|
179
|
-
}
|
|
180
|
-
]
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
"Peers": [
|
|
184
|
-
{
|
|
185
|
-
"Addrs": [
|
|
186
|
-
"/ip4/104.131.131.82/udp/4001/quic-v1/webtransport/certhash/uEiCIMEw_vvBwFLEqWbOj_wx7I90HmfMabSyVZ9Vn5srjPA/certhash/uEiBy22YtYUPU8T3aJ4rL3jC0lLR8MFZZNkFP-rWRxMrqQA",
|
|
187
|
-
"/ip4/104.131.131.82/udp/4001/quic-v1",
|
|
188
|
-
"/ip4/104.131.131.82/tcp/4001",
|
|
189
|
-
"/ip4/104.131.131.82/udp/4001/quic"
|
|
190
|
-
],
|
|
191
|
-
"ID": "QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
|
|
192
|
-
"Schema": "peer"
|
|
193
|
-
}
|
|
194
|
-
]
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
"Peers": [
|
|
198
|
-
{
|
|
199
|
-
"Addrs": [
|
|
200
|
-
"/ip4/16.170.214.173/udp/4001/quic-v1/webtransport/certhash/uEiAKAeeOxU7ExDc81y7d53D96nFaRmmXwSFj0429Ij9T9A/certhash/uEiB4ttGGuaUzqF84q5RFhUTVArF4mb9t_UN_kcsfd4qYEQ",
|
|
201
|
-
"/ip4/16.170.214.173/tcp/4001",
|
|
202
|
-
"/ip4/16.170.214.173/udp/4001/quic-v1"
|
|
203
|
-
],
|
|
204
|
-
"ID": "12D3KooWHh98YpAkJsn3ULjMjK1n9QVkXmi8Sb3gTDMatHxCmDP5",
|
|
205
|
-
"Schema": "peer"
|
|
206
|
-
}
|
|
207
|
-
]
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
"Peers": [
|
|
211
|
-
{
|
|
212
|
-
"Addrs": [
|
|
213
|
-
"/ip4/18.119.248.24/udp/4001/quic-v1",
|
|
214
|
-
"/ip4/18.119.248.24/tcp/4001",
|
|
215
|
-
"/ip4/18.119.248.24/udp/4001/quic-v1/webtransport/certhash/uEiDwG2YnjoUpoKqmUMX-aYJeLi1UNEsqa8EFhpHFUVs0AQ/certhash/uEiCqy6-Pk3S2iYS0puQ0UhtTZ1s_nw-sIsoB-bX0Le6lFA"
|
|
216
|
-
],
|
|
217
|
-
"ID": "12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj",
|
|
218
|
-
"Schema": "peer"
|
|
219
|
-
}
|
|
220
|
-
]
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
"Peers": [
|
|
224
|
-
{
|
|
225
|
-
"Addrs": [
|
|
226
|
-
"/ip4/83.173.236.99/udp/4001/quic-v1/webtransport/certhash/uEiD8mhYDW_6kgJAb07RlZnA-YSScG38df5wb9IxFtZmQwQ/certhash/uEiACG9e-sG_ild6y5t-jvb_dfsNi_gPgZ7nn7Qa5ctT-Wg",
|
|
227
|
-
"/ip6/2a02:121e:21e:1:546f:18ff:fea8:8e/tcp/4001",
|
|
228
|
-
"/ip4/83.173.236.99/tcp/10201",
|
|
229
|
-
"/dns4/ipfs-ws.neaweb.ch/tcp/443/wss",
|
|
230
|
-
"/ip4/89.251.251.195/udp/4001/quic-v1",
|
|
231
|
-
"/ip4/89.251.251.195/udp/4001/quic-v1/webtransport/certhash/uEiD8mhYDW_6kgJAb07RlZnA-YSScG38df5wb9IxFtZmQwQ/certhash/uEiACG9e-sG_ild6y5t-jvb_dfsNi_gPgZ7nn7Qa5ctT-Wg",
|
|
232
|
-
"/ip6/2a02:121e:21e:1:546f:18ff:fea8:8e/udp/4001/quic-v1",
|
|
233
|
-
"/ip4/89.251.251.195/tcp/4001/quic-v1/webtransport",
|
|
234
|
-
"/ip6/2a02:121e:21e:1:546f:18ff:fea8:8e/tcp/4011/ws",
|
|
235
|
-
"/ip4/89.251.251.195/tcp/4001",
|
|
236
|
-
"/dns4/ipfs-ws.neaweb.tech/tcp/443/wss",
|
|
237
|
-
"/ip4/89.251.251.195/tcp/4001/quic-v1",
|
|
238
|
-
"/ip4/83.173.236.99/tcp/4001",
|
|
239
|
-
"/ip6/2a02:121e:21e:1:546f:18ff:fea8:8e/udp/4001/quic-v1/webtransport/certhash/uEiD8mhYDW_6kgJAb07RlZnA-YSScG38df5wb9IxFtZmQwQ/certhash/uEiACG9e-sG_ild6y5t-jvb_dfsNi_gPgZ7nn7Qa5ctT-Wg",
|
|
240
|
-
"/ip4/83.173.236.99/udp/4001/quic-v1",
|
|
241
|
-
"/ip4/83.173.236.99/udp/19707/quic-v1",
|
|
242
|
-
"/ip4/83.173.236.99/udp/19707/quic-v1/webtransport/certhash/uEiD8mhYDW_6kgJAb07RlZnA-YSScG38df5wb9IxFtZmQwQ/certhash/uEiACG9e-sG_ild6y5t-jvb_dfsNi_gPgZ7nn7Qa5ctT-Wg"
|
|
243
|
-
],
|
|
244
|
-
"ID": "12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk",
|
|
245
|
-
"Schema": "peer"
|
|
246
|
-
}
|
|
247
|
-
]
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
"Peers": [
|
|
251
|
-
{
|
|
252
|
-
"Addrs": [
|
|
253
|
-
"/ip4/89.58.11.155/udp/4001/quic-v1/webtransport/certhash/uEiDDgTBtcIstrvU4MRSfcD7tYDIsQrnGAxW6Oh5AoLm4Ig/certhash/uEiAXHXsg1wBb-sPvpBw8BVpRFxso1milPa801TxjPNYQ3w",
|
|
254
|
-
"/ip4/89.58.11.155/udp/4001/quic",
|
|
255
|
-
"/ip6/64:ff9b::593a:b9b/udp/4001/quic-v1/webtransport/certhash/uEiDDgTBtcIstrvU4MRSfcD7tYDIsQrnGAxW6Oh5AoLm4Ig/certhash/uEiAXHXsg1wBb-sPvpBw8BVpRFxso1milPa801TxjPNYQ3w",
|
|
256
|
-
"/ip6/64:ff9b::593a:b9b/udp/4001/quic-v1",
|
|
257
|
-
"/ip4/89.58.11.155/udp/4001/quic-v1",
|
|
258
|
-
"/ip4/89.58.11.155/tcp/4001"
|
|
259
|
-
],
|
|
260
|
-
"ID": "12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL",
|
|
261
|
-
"Schema": "peer"
|
|
262
|
-
}
|
|
263
|
-
]
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
"Peers": [
|
|
267
|
-
{
|
|
268
|
-
"Addrs": [
|
|
269
|
-
"/ip4/205.198.64.76/tcp/4001",
|
|
270
|
-
"/ip4/205.198.64.76/udp/4001/quic-v1",
|
|
271
|
-
"/ip4/205.198.64.76/udp/4001/quic-v1/webtransport/certhash/uEiCT4khDdgvF2NHCw-fu3qUk2qRqx0AgTEt0PHZct8jq5g/certhash/uEiA2RYkSCyOOtJmrpm_Dn8jJr-LLwS0S7K3HX3dbJJlN_w"
|
|
272
|
-
],
|
|
273
|
-
"ID": "12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H",
|
|
274
|
-
"Schema": "peer"
|
|
275
|
-
}
|
|
276
|
-
]
|
|
277
|
-
},
|
|
278
32
|
];
|
|
279
33
|
|
|
280
34
|
const CONFIG_KNOWN_BOOTSTRAP_PEER_IDS = [
|
|
281
35
|
'12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr',
|
|
282
|
-
'12D3KooWGahRw3ZnM4gAyd9FK75v4Bp5keFYTvkcAwhpEm28wbV3',
|
|
283
36
|
'12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
|
|
284
37
|
'12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
|
|
285
38
|
'12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
|
|
@@ -372,6 +125,13 @@ function uint8ArrayFromString(string){
|
|
|
372
125
|
return uint8Array
|
|
373
126
|
}
|
|
374
127
|
|
|
128
|
+
async function first(farr){
|
|
129
|
+
for await(const data of farr){
|
|
130
|
+
return data
|
|
131
|
+
//break
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
375
135
|
//Add id to pupsub message
|
|
376
136
|
async function msgIdFnStrictNoSign(msg){
|
|
377
137
|
var enc = new TextEncoder();
|
|
@@ -476,26 +236,26 @@ function metrics(data){
|
|
|
476
236
|
const fail = errors+timeouts;
|
|
477
237
|
const treshold = errors+timeouts+stats.open+stats.pending;
|
|
478
238
|
|
|
479
|
-
if(treshold>
|
|
239
|
+
if(treshold>60){
|
|
480
240
|
//console.log(`Treeshold hit : ${treshold}`)
|
|
481
241
|
}
|
|
482
242
|
|
|
483
|
-
if(fail>
|
|
243
|
+
if(fail>60){
|
|
484
244
|
//console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
|
|
485
245
|
|
|
486
246
|
}
|
|
487
247
|
|
|
488
|
-
if ((fail-lastfailtreshold)>
|
|
248
|
+
if ((fail-lastfailtreshold)>30){
|
|
489
249
|
if(isDialEnabled){
|
|
490
250
|
isDialEnabled = false;
|
|
491
|
-
|
|
492
|
-
|
|
251
|
+
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
|
|
252
|
+
console.warn(str);
|
|
493
253
|
setTimeout(()=>{
|
|
494
254
|
if(!isDialEnabled){
|
|
495
255
|
isDialEnabled = true;
|
|
496
256
|
lastfailtreshold = fail;
|
|
497
|
-
|
|
498
|
-
|
|
257
|
+
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
|
|
258
|
+
console.warn(str);
|
|
499
259
|
}
|
|
500
260
|
},6*60*1000);
|
|
501
261
|
}
|
|
@@ -507,14 +267,7 @@ function metrics(data){
|
|
|
507
267
|
catch{
|
|
508
268
|
console.debug('Metrics error');
|
|
509
269
|
}
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
/*
|
|
513
|
-
onunhandledrejection = function(evt) {
|
|
514
|
-
console.warn(evt.reason);
|
|
515
|
-
return
|
|
516
|
-
}
|
|
517
|
-
*/
|
|
270
|
+
}
|
|
518
271
|
|
|
519
272
|
class webpeerjs{
|
|
520
273
|
|
|
@@ -570,6 +323,9 @@ class webpeerjs{
|
|
|
570
323
|
//is dial enabled
|
|
571
324
|
#isDialEnabled
|
|
572
325
|
|
|
326
|
+
//message tracker avoid double
|
|
327
|
+
#msgIdtracker
|
|
328
|
+
|
|
573
329
|
id
|
|
574
330
|
status
|
|
575
331
|
IPFS
|
|
@@ -597,6 +353,7 @@ class webpeerjs{
|
|
|
597
353
|
this.#trackDisconnect = new Map();
|
|
598
354
|
this.#dialQueue = [];
|
|
599
355
|
this.#isDialEnabled = true;
|
|
356
|
+
this.#msgIdtracker = [];
|
|
600
357
|
|
|
601
358
|
this.peers = (function(f) {
|
|
602
359
|
return f
|
|
@@ -631,6 +388,9 @@ class webpeerjs{
|
|
|
631
388
|
if(connection.toString() === CONFIG_KNOWN_BOOTSTRAP_PEER_IDS[0]){
|
|
632
389
|
setTimeout(()=>{
|
|
633
390
|
this.#announce();
|
|
391
|
+
setTimeout(()=>{
|
|
392
|
+
this.#announce();
|
|
393
|
+
},5000);
|
|
634
394
|
},1000);
|
|
635
395
|
}
|
|
636
396
|
|
|
@@ -642,6 +402,7 @@ class webpeerjs{
|
|
|
642
402
|
|
|
643
403
|
//console.log('on:'+event.detail.topic,event.detail.data)
|
|
644
404
|
//console.log('from '+event.detail.from.toString(),event)
|
|
405
|
+
//console.log('ontopic:'+event.detail.topic)
|
|
645
406
|
|
|
646
407
|
if (event.detail.type !== 'signed') {
|
|
647
408
|
return
|
|
@@ -711,6 +472,7 @@ class webpeerjs{
|
|
|
711
472
|
const room = json.room;
|
|
712
473
|
const rooms = json.rooms;
|
|
713
474
|
const message = json.message;
|
|
475
|
+
const msgId = json.msgId;
|
|
714
476
|
const signal = json.signal;
|
|
715
477
|
const id = json.id;
|
|
716
478
|
//console.log(`from ${id}:${signal} = ${message}`)
|
|
@@ -742,16 +504,21 @@ class webpeerjs{
|
|
|
742
504
|
if(room){
|
|
743
505
|
if(this.#rooms[room]){
|
|
744
506
|
|
|
745
|
-
//inbound message
|
|
746
|
-
if(message){
|
|
747
|
-
this.#rooms[room].onMessage(message,id);
|
|
748
|
-
}
|
|
749
|
-
|
|
750
507
|
//update room members
|
|
751
508
|
if(!this.#rooms[room].members.includes(id)){
|
|
752
509
|
this.#rooms[room].members.push(id);
|
|
753
510
|
this.#rooms[room].onMembers(this.#rooms[room].members);
|
|
754
511
|
}
|
|
512
|
+
|
|
513
|
+
//inbound message
|
|
514
|
+
if(message){
|
|
515
|
+
const msgID = msgId+id;
|
|
516
|
+
if(!this.#msgIdtracker.includes(msgID)){
|
|
517
|
+
this.#msgIdtracker.push(msgID);
|
|
518
|
+
this.#rooms[room].onMessage(message,id);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
755
522
|
}
|
|
756
523
|
}
|
|
757
524
|
|
|
@@ -945,13 +712,47 @@ class webpeerjs{
|
|
|
945
712
|
|
|
946
713
|
});
|
|
947
714
|
|
|
948
|
-
|
|
715
|
+
setTimeout(()=>{
|
|
949
716
|
this.#dialQueueList();
|
|
950
|
-
|
|
717
|
+
setInterval(()=>{
|
|
718
|
+
this.#dialQueueList();
|
|
719
|
+
},5e3);
|
|
720
|
+
},10e3);
|
|
721
|
+
|
|
722
|
+
|
|
951
723
|
|
|
952
724
|
setInterval(()=>{
|
|
953
725
|
this.#trackLastSeen();
|
|
954
726
|
},5e3);
|
|
727
|
+
|
|
728
|
+
setInterval(async()=>{
|
|
729
|
+
/*const peerId = peerIdFromString('QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN')
|
|
730
|
+
//const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
|
|
731
|
+
|
|
732
|
+
//console.info(peerInfo)
|
|
733
|
+
for await (const event of this.#libp2p.services.aminoDHT.findPeer(peerId)){
|
|
734
|
+
console.info(event)
|
|
735
|
+
}*/
|
|
736
|
+
},5e3);
|
|
737
|
+
|
|
738
|
+
/*setTimeout(async()=>{
|
|
739
|
+
try{
|
|
740
|
+
//console.log('getClosestPeers')
|
|
741
|
+
const digest = await getDigest()
|
|
742
|
+
//console.log('digest',digest)
|
|
743
|
+
for await (const event of this.#libp2p.services.aminoDHT.getClosestPeers(digest)){
|
|
744
|
+
if (event.name === 'FINAL_PEER'){
|
|
745
|
+
//event.peer.multiaddrs.forEach((ma) => {
|
|
746
|
+
//console.log(event.peer.id.toString(),ma.toString())
|
|
747
|
+
//})
|
|
748
|
+
//console.log(event.peer.id.toString(),event.peer.multiaddrs.toString())
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
catch(err){
|
|
753
|
+
console.error('query error', err)
|
|
754
|
+
}
|
|
755
|
+
},60e3)*/
|
|
955
756
|
|
|
956
757
|
}
|
|
957
758
|
|
|
@@ -1141,7 +942,8 @@ class webpeerjs{
|
|
|
1141
942
|
onMessage : () => {},
|
|
1142
943
|
listenMessage : f => (this.#rooms[room] = {...this.#rooms[room], onMessage: f}),
|
|
1143
944
|
sendMessage : async (message) => {
|
|
1144
|
-
const
|
|
945
|
+
const msgId = (new Date()).getTime();
|
|
946
|
+
const data = JSON.stringify({prefix:CONFIG_PREFIX,room,message,id:this.#libp2p.peerId.toString(),msgId});
|
|
1145
947
|
const peer = {
|
|
1146
948
|
publicKey: this.#libp2p.peerId.publicKey,
|
|
1147
949
|
addrs: [uint8ArrayFromString(data)],
|
|
@@ -1223,14 +1025,16 @@ class webpeerjs{
|
|
|
1223
1025
|
else {
|
|
1224
1026
|
const bootstrap = CONFIG_KNOWN_BOOTSTRAP_PEERS_ADDRS;
|
|
1225
1027
|
const index = bootstrap.findIndex((peer)=>peer.Peers[0].ID == id);
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
const
|
|
1230
|
-
|
|
1231
|
-
|
|
1028
|
+
if(index > -1){
|
|
1029
|
+
const addrs = bootstrap[index].Peers[0].Addrs;
|
|
1030
|
+
let mddrs = [];
|
|
1031
|
+
for(const addr of addrs){
|
|
1032
|
+
const peeraddr = addr+'/p2p/'+id;
|
|
1033
|
+
const mddr = multiaddr(peeraddr);
|
|
1034
|
+
mddrs.push(mddr);
|
|
1035
|
+
}
|
|
1036
|
+
this.#dialMultiaddress(mddrs);
|
|
1232
1037
|
}
|
|
1233
|
-
this.#dialMultiaddress(mddrs);
|
|
1234
1038
|
}
|
|
1235
1039
|
}
|
|
1236
1040
|
}
|
|
@@ -1352,12 +1156,12 @@ class webpeerjs{
|
|
|
1352
1156
|
|
|
1353
1157
|
//dial to all known bootstrap peers and DNS
|
|
1354
1158
|
#dialKnownPeers(){
|
|
1355
|
-
this.#dialKnownBootstrap()
|
|
1356
|
-
setTimeout(()=>{
|
|
1357
|
-
const peers = this.#libp2p.getPeers().length
|
|
1358
|
-
if(peers == 0){
|
|
1159
|
+
//this.#dialKnownBootstrap()
|
|
1160
|
+
//setTimeout(()=>{
|
|
1161
|
+
//const peers = this.#libp2p.getPeers().length
|
|
1162
|
+
//if(peers == 0){
|
|
1359
1163
|
//currently not needed
|
|
1360
|
-
|
|
1164
|
+
this.#dialKnownID();
|
|
1361
1165
|
setTimeout(()=>{
|
|
1362
1166
|
const peers = this.#libp2p.getPeers().length;
|
|
1363
1167
|
if(peers == 0){
|
|
@@ -1368,8 +1172,8 @@ class webpeerjs{
|
|
|
1368
1172
|
},15000);
|
|
1369
1173
|
}
|
|
1370
1174
|
},15000);
|
|
1371
|
-
}
|
|
1372
|
-
},15000)
|
|
1175
|
+
//}
|
|
1176
|
+
//},15000)
|
|
1373
1177
|
}
|
|
1374
1178
|
|
|
1375
1179
|
|
|
@@ -1398,32 +1202,32 @@ class webpeerjs{
|
|
|
1398
1202
|
|
|
1399
1203
|
|
|
1400
1204
|
//dial based on known peers ID
|
|
1401
|
-
|
|
1402
|
-
const api =
|
|
1403
|
-
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api)
|
|
1404
|
-
const BOOTSTRAP_PEER_IDS =
|
|
1205
|
+
async #dialKnownID(){
|
|
1206
|
+
const api = CONFIG_DELEGATED_API;
|
|
1207
|
+
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
|
|
1208
|
+
const BOOTSTRAP_PEER_IDS = CONFIG_KNOWN_BOOTSTRAP_PEER_IDS;
|
|
1405
1209
|
const peers = await Promise.all(
|
|
1406
1210
|
BOOTSTRAP_PEER_IDS.map((peerId) => first(delegatedClient.getPeers(peerIdFromString(peerId)))),
|
|
1407
|
-
)
|
|
1211
|
+
);
|
|
1408
1212
|
for(const peer of peers){
|
|
1409
1213
|
if(!peer)return
|
|
1410
|
-
const address = peer.Addrs
|
|
1411
|
-
const id = peer.ID
|
|
1412
|
-
let mddrs = []
|
|
1413
|
-
let addrs = []
|
|
1214
|
+
const address = peer.Addrs;
|
|
1215
|
+
const id = peer.ID;
|
|
1216
|
+
let mddrs = [];
|
|
1217
|
+
let addrs = [];
|
|
1414
1218
|
for(const addr of address){
|
|
1415
|
-
const peeraddr = addr.toString()+'/p2p/'+id.toString()
|
|
1416
|
-
const peermddr = multiaddr(peeraddr)
|
|
1417
|
-
addrs.push(peeraddr)
|
|
1418
|
-
mddrs.push(peermddr)
|
|
1219
|
+
const peeraddr = addr.toString()+'/p2p/'+id.toString();
|
|
1220
|
+
const peermddr = multiaddr(peeraddr);
|
|
1221
|
+
addrs.push(peeraddr);
|
|
1222
|
+
mddrs.push(peermddr);
|
|
1419
1223
|
}
|
|
1420
1224
|
|
|
1421
|
-
this.#dialedKnownBootstrap.set(id,addrs)
|
|
1225
|
+
this.#dialedKnownBootstrap.set(id,addrs);
|
|
1422
1226
|
if(!this.#isConnected(id)){
|
|
1423
|
-
this.#dialMultiaddress(mddrs)
|
|
1227
|
+
this.#dialMultiaddress(mddrs);
|
|
1424
1228
|
}
|
|
1425
1229
|
}
|
|
1426
|
-
}
|
|
1230
|
+
}
|
|
1427
1231
|
|
|
1428
1232
|
|
|
1429
1233
|
//dial based on known bootstrap DNS
|
|
@@ -1591,7 +1395,7 @@ class webpeerjs{
|
|
|
1591
1395
|
autoDialConcurrency:0,
|
|
1592
1396
|
autoDialMaxQueueLength:0,
|
|
1593
1397
|
autoDialPriority:1000,
|
|
1594
|
-
autoDialDiscoveredPeersDebounce:
|
|
1398
|
+
autoDialDiscoveredPeersDebounce:60e3,
|
|
1595
1399
|
maxParallelDials: 3,
|
|
1596
1400
|
dialTimeout: 5e3,
|
|
1597
1401
|
maxIncomingPendingConnections: 5,
|
|
@@ -1603,8 +1407,8 @@ class webpeerjs{
|
|
|
1603
1407
|
connectionEncryption: [noise()],
|
|
1604
1408
|
streamMuxers: [
|
|
1605
1409
|
yamux({
|
|
1606
|
-
maxInboundStreams:
|
|
1607
|
-
maxOutboundStreams:
|
|
1410
|
+
maxInboundStreams: 20,
|
|
1411
|
+
maxOutboundStreams: 20,
|
|
1608
1412
|
})
|
|
1609
1413
|
],
|
|
1610
1414
|
connectionGater: {
|
|
@@ -1642,6 +1446,7 @@ class webpeerjs{
|
|
|
1642
1446
|
allowPublishToZeroTopicPeers: true,
|
|
1643
1447
|
msgIdFn: msgIdFnStrictNoSign,
|
|
1644
1448
|
ignoreDuplicatePublishError: true,
|
|
1449
|
+
runOnTransientConnection:true,
|
|
1645
1450
|
}),
|
|
1646
1451
|
identify: identify(),
|
|
1647
1452
|
identifyPush: identifyPush(),
|