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.
@@ -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 = 50;
23
+ const CONFIG_MAX_CONNECTIONS = 100;
22
24
  const CONFIG_MIN_CONNECTIONS = 0;
23
- const CONFIG_DISCOVER_RELAYS = 2;
25
+ const CONFIG_DISCOVER_RELAYS = 1;
24
26
  const CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY = 'universal-connectivity-browser-peer-discovery';
25
- const CONFIG_PUBSUB_PEER_DISCOVERY = ['_peer-discovery._p2p._pubsub',CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY,prefix$1+'-peer-discovery'];
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>50){
239
+ if(treshold>60){
480
240
  //console.log(`Treeshold hit : ${treshold}`)
481
241
  }
482
242
 
483
- if(fail>50){
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)>50){
248
+ if ((fail-lastfailtreshold)>30){
489
249
  if(isDialEnabled){
490
250
  isDialEnabled = false;
491
- //const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold})
492
- //console.warn(str)
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
- //const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold})
498
- //console.warn(str)
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
- setInterval(()=>{
715
+ setTimeout(()=>{
949
716
  this.#dialQueueList();
950
- },5e3);
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 data = JSON.stringify({prefix:CONFIG_PREFIX,room,message,id:this.#libp2p.peerId.toString()});
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
- const addrs = bootstrap[index].Peers[0].Addrs;
1227
- let mddrs = [];
1228
- for(const addr of addrs){
1229
- const peeraddr = addr+'/p2p/'+id;
1230
- const mddr = multiaddr(peeraddr);
1231
- mddrs.push(mddr);
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
- //this.#dialKnownID()
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
- /*async #dialKnownID(){
1402
- const api = config.CONFIG_DELEGATED_API
1403
- const delegatedClient = createDelegatedRoutingV1HttpApiClient(api)
1404
- const BOOTSTRAP_PEER_IDS = config.CONFIG_KNOWN_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:30e3,
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: 50,
1607
- maxOutboundStreams: 50,
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(),