webpeerjs 0.0.5 → 0.0.7
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 +288 -76
- package/dist/umd/webpeerjs.js +288 -76
- package/package.json +1 -1
- package/src/config.js +13 -8
- package/src/utils.js +11 -6
- package/src/webpeerjs.js +265 -52
package/src/utils.js
CHANGED
|
@@ -12,6 +12,10 @@ const prefix = config.CONFIG_PREFIX
|
|
|
12
12
|
|
|
13
13
|
export const mkErr = msg => new Error(`${prefix}: ${msg}`)
|
|
14
14
|
|
|
15
|
+
export function mkDebug(error){
|
|
16
|
+
return
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
export {PBPeer}
|
|
16
20
|
|
|
17
21
|
export function uint8ArrayToString(uint8Array){
|
|
@@ -82,6 +86,7 @@ let lastStats = {
|
|
|
82
86
|
|
|
83
87
|
let isDialEnabled = true
|
|
84
88
|
let lastfailtreshold = 0
|
|
89
|
+
let fail = 0
|
|
85
90
|
|
|
86
91
|
export function metrics(data){
|
|
87
92
|
try{
|
|
@@ -134,29 +139,29 @@ export function metrics(data){
|
|
|
134
139
|
|
|
135
140
|
lastStats = webTransportEvents
|
|
136
141
|
|
|
137
|
-
|
|
142
|
+
fail = errors+timeouts
|
|
138
143
|
const treshold = errors+timeouts+stats.open+stats.pending
|
|
139
144
|
|
|
140
|
-
if(treshold>
|
|
145
|
+
if(treshold>40){
|
|
141
146
|
//console.log(`Treeshold hit : ${treshold}`)
|
|
142
147
|
}
|
|
143
148
|
|
|
144
|
-
if(fail>
|
|
149
|
+
if(fail>40){
|
|
145
150
|
//console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
|
|
146
151
|
|
|
147
152
|
}
|
|
148
153
|
|
|
149
|
-
if ((fail-lastfailtreshold)>
|
|
154
|
+
if ((fail-lastfailtreshold)>40){
|
|
150
155
|
if(isDialEnabled){
|
|
151
156
|
isDialEnabled = false
|
|
152
157
|
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold})
|
|
153
|
-
console.warn(
|
|
158
|
+
console.warn('dial disabled')
|
|
154
159
|
setTimeout(()=>{
|
|
155
160
|
if(!isDialEnabled){
|
|
156
161
|
isDialEnabled = true
|
|
157
162
|
lastfailtreshold = fail
|
|
158
163
|
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold})
|
|
159
|
-
console.warn(
|
|
164
|
+
console.warn('dial enabled')
|
|
160
165
|
}
|
|
161
166
|
},6*60*1000)
|
|
162
167
|
}
|
package/src/webpeerjs.js
CHANGED
|
@@ -8,7 +8,8 @@ import {
|
|
|
8
8
|
Key,
|
|
9
9
|
msgIdFnStrictNoSign,
|
|
10
10
|
metrics,
|
|
11
|
-
getDigest
|
|
11
|
+
getDigest,
|
|
12
|
+
mkDebug
|
|
12
13
|
} from './utils'
|
|
13
14
|
import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client'
|
|
14
15
|
import { createLibp2p } from 'libp2p'
|
|
@@ -129,20 +130,27 @@ class webpeerjs{
|
|
|
129
130
|
|
|
130
131
|
|
|
131
132
|
//listen to peer connect event
|
|
132
|
-
this.#libp2p.addEventListener("peer:connect", (evt) => {
|
|
133
|
-
|
|
134
|
-
//console.log(`Connected to ${connection.toString()}`);
|
|
133
|
+
this.#libp2p.addEventListener("peer:connect",async (evt) => {
|
|
135
134
|
|
|
136
135
|
const connection = evt.detail;
|
|
137
136
|
const id = evt.detail.toString()
|
|
138
137
|
|
|
138
|
+
//console.log('peer:connect '+id,evt)
|
|
139
|
+
|
|
139
140
|
const connections = this.#libp2p.getConnections().map((con)=>{return {id:con.remotePeer.toString(),addr:con.remoteAddr.toString()}})
|
|
140
141
|
const connect = connections.find((con)=>con.id == id)
|
|
141
142
|
const addr = connect.addr
|
|
143
|
+
|
|
144
|
+
if(config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) || config.CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
|
|
145
|
+
if(!this.#connections.has(id)&&addr.includes('webtransport')){
|
|
146
|
+
await this.#dbstore.put(new Key(id), new TextEncoder().encode(addr))
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
142
150
|
this.#connections.set(id,addr)
|
|
143
151
|
|
|
144
152
|
//required by joinRoom version 1 to announce via universal connectivity
|
|
145
|
-
if(
|
|
153
|
+
if(config.CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
|
|
146
154
|
setTimeout(()=>{
|
|
147
155
|
this.#announce()
|
|
148
156
|
setTimeout(()=>{
|
|
@@ -151,6 +159,31 @@ class webpeerjs{
|
|
|
151
159
|
},1000)
|
|
152
160
|
}
|
|
153
161
|
|
|
162
|
+
if(this.#webPeersId.includes(id)){
|
|
163
|
+
|
|
164
|
+
let address = [addr]
|
|
165
|
+
|
|
166
|
+
if(this.#connectedPeers.has(id)){
|
|
167
|
+
//reset this last seen
|
|
168
|
+
const now = new Date().getTime()
|
|
169
|
+
const metadata = {addrs:address,last:now}
|
|
170
|
+
this.#connectedPeers.set(id,metadata)
|
|
171
|
+
}
|
|
172
|
+
else{
|
|
173
|
+
//add to connected webpeers
|
|
174
|
+
this.#onConnectFn(id)
|
|
175
|
+
const now = new Date().getTime()
|
|
176
|
+
const metadata = {addrs:address,last:now}
|
|
177
|
+
this.#connectedPeers.set(id,metadata)
|
|
178
|
+
this.#connectedPeersArr.length = 0
|
|
179
|
+
for(const peer of this.#connectedPeers){
|
|
180
|
+
const item = {id:peer[0],address:peer[1].addrs}
|
|
181
|
+
this.#connectedPeersArr.push(item)
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
}
|
|
186
|
+
|
|
154
187
|
});
|
|
155
188
|
|
|
156
189
|
|
|
@@ -187,6 +220,11 @@ class webpeerjs{
|
|
|
187
220
|
const now = new Date().getTime()
|
|
188
221
|
const metadata = {addrs:address,last:now}
|
|
189
222
|
this.#connectedPeers.set(senderPeerId,metadata)
|
|
223
|
+
this.#connectedPeersArr.length = 0
|
|
224
|
+
for(const peer of this.#connectedPeers){
|
|
225
|
+
const item = {id:peer[0],address:peer[1].addrs}
|
|
226
|
+
this.#connectedPeersArr.push(item)
|
|
227
|
+
}
|
|
190
228
|
}
|
|
191
229
|
|
|
192
230
|
//dial if not connected
|
|
@@ -302,7 +340,7 @@ class webpeerjs{
|
|
|
302
340
|
}
|
|
303
341
|
|
|
304
342
|
//update connected webpeers
|
|
305
|
-
const now = new Date().getTime()
|
|
343
|
+
/*const now = new Date().getTime()
|
|
306
344
|
const metadata = {addrs:address,last:now}
|
|
307
345
|
this.#connectedPeers.set(id,metadata)
|
|
308
346
|
this.#webPeersAddrs.set(id,address)
|
|
@@ -310,14 +348,14 @@ class webpeerjs{
|
|
|
310
348
|
for(const peer of this.#connectedPeers){
|
|
311
349
|
const item = {id:peer[0],address:peer[1].addrs}
|
|
312
350
|
this.#connectedPeersArr.push(item)
|
|
313
|
-
}
|
|
351
|
+
}*/
|
|
314
352
|
|
|
315
353
|
}
|
|
316
354
|
}
|
|
317
355
|
|
|
318
356
|
}catch(err){
|
|
319
357
|
//console.log('from '+event.detail.from.toString())
|
|
320
|
-
|
|
358
|
+
mkDebug(err)
|
|
321
359
|
}
|
|
322
360
|
}else{
|
|
323
361
|
const json = JSON.parse(topic)
|
|
@@ -368,7 +406,7 @@ class webpeerjs{
|
|
|
368
406
|
const mddr = multiaddr(addr)
|
|
369
407
|
mddrs.push(mddr)
|
|
370
408
|
}
|
|
371
|
-
|
|
409
|
+
this.#dialMultiaddress(mddrs)
|
|
372
410
|
}
|
|
373
411
|
}
|
|
374
412
|
}
|
|
@@ -432,7 +470,7 @@ class webpeerjs{
|
|
|
432
470
|
let mddrs = []
|
|
433
471
|
const addrs = multiaddr(addr)
|
|
434
472
|
mddrs.push(addrs)
|
|
435
|
-
this.#dialMultiaddress(mddrs)
|
|
473
|
+
//this.#dialMultiaddress(mddrs)
|
|
436
474
|
}
|
|
437
475
|
});
|
|
438
476
|
|
|
@@ -454,6 +492,45 @@ class webpeerjs{
|
|
|
454
492
|
this.#ping()
|
|
455
493
|
})
|
|
456
494
|
|
|
495
|
+
this.#libp2p.addEventListener('peer:identify', (evt) => {
|
|
496
|
+
//console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
|
|
497
|
+
if(evt.detail.protocols.includes(config.CONFIG_PROTOCOL)){
|
|
498
|
+
//console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
|
|
499
|
+
|
|
500
|
+
const id = evt.detail.peerId.toString()
|
|
501
|
+
let address = []
|
|
502
|
+
|
|
503
|
+
for(const addrs of evt.detail.listenAddrs){
|
|
504
|
+
const addr = addrs.toString()+'/p2p/'+id
|
|
505
|
+
if(addr.includes('webtransport')){
|
|
506
|
+
address.push(addr)
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
if(!this.#webPeersId.includes(id))this.#webPeersId.push(id)
|
|
511
|
+
|
|
512
|
+
if(this.#connectedPeers.has(id)){
|
|
513
|
+
//reset this last seen
|
|
514
|
+
const now = new Date().getTime()
|
|
515
|
+
const metadata = {addrs:address,last:now}
|
|
516
|
+
this.#connectedPeers.set(id,metadata)
|
|
517
|
+
}
|
|
518
|
+
else{
|
|
519
|
+
//add to connected webpeers
|
|
520
|
+
this.#onConnectFn(id)
|
|
521
|
+
const now = new Date().getTime()
|
|
522
|
+
const metadata = {addrs:address,last:now}
|
|
523
|
+
this.#connectedPeers.set(id,metadata)
|
|
524
|
+
this.#connectedPeersArr.length = 0
|
|
525
|
+
for(const peer of this.#connectedPeers){
|
|
526
|
+
const item = {id:peer[0],address:peer[1].addrs}
|
|
527
|
+
this.#connectedPeersArr.push(item)
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
}
|
|
532
|
+
})
|
|
533
|
+
|
|
457
534
|
//dial known peers from configuration
|
|
458
535
|
this.#dialKnownPeers()
|
|
459
536
|
|
|
@@ -468,6 +545,9 @@ class webpeerjs{
|
|
|
468
545
|
|
|
469
546
|
//dial random discovered peers
|
|
470
547
|
//this.#dialdiscoveredpeers()
|
|
548
|
+
|
|
549
|
+
this.#registerProtocol()
|
|
550
|
+
|
|
471
551
|
|
|
472
552
|
onMetrics((data)=>{
|
|
473
553
|
const signal = metrics(data)
|
|
@@ -487,16 +567,7 @@ class webpeerjs{
|
|
|
487
567
|
setInterval(()=>{
|
|
488
568
|
this.#trackLastSeen()
|
|
489
569
|
},5e3)
|
|
490
|
-
|
|
491
|
-
setInterval(async()=>{
|
|
492
|
-
/*const peerId = peerIdFromString('QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN')
|
|
493
|
-
//const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
|
|
494
|
-
|
|
495
|
-
//console.info(peerInfo)
|
|
496
|
-
for await (const event of this.#libp2p.services.aminoDHT.findPeer(peerId)){
|
|
497
|
-
console.info(event)
|
|
498
|
-
}*/
|
|
499
|
-
},5e3)
|
|
570
|
+
|
|
500
571
|
|
|
501
572
|
/*setTimeout(async()=>{
|
|
502
573
|
try{
|
|
@@ -517,6 +588,14 @@ class webpeerjs{
|
|
|
517
588
|
}
|
|
518
589
|
},60e3)*/
|
|
519
590
|
|
|
591
|
+
/*setTimeout(async()=>{
|
|
592
|
+
const key = uint8ArrayFromString(config.CONFIG_PREFIX)
|
|
593
|
+
const value = uint8ArrayFromString(this.id)
|
|
594
|
+
for await (const event of this.#libp2p.services.aminoDHT.put(key,value)){
|
|
595
|
+
console.log('put',event)
|
|
596
|
+
}
|
|
597
|
+
},30e3)*/
|
|
598
|
+
|
|
520
599
|
}
|
|
521
600
|
|
|
522
601
|
|
|
@@ -542,6 +621,62 @@ class webpeerjs{
|
|
|
542
621
|
PRIVATE FUNCTION
|
|
543
622
|
*/
|
|
544
623
|
|
|
624
|
+
async #registerProtocol(){
|
|
625
|
+
const handler = ({ connection, stream, protocol }) => {
|
|
626
|
+
// use stream or connection according to the needs
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
await this.#libp2p.handle(config.CONFIG_PROTOCOL, handler, {
|
|
630
|
+
maxInboundStreams: 5,
|
|
631
|
+
maxOutboundStreams: 5
|
|
632
|
+
})
|
|
633
|
+
|
|
634
|
+
await this.#libp2p.register(config.CONFIG_PROTOCOL, {
|
|
635
|
+
onConnect: (peer, connection) => {
|
|
636
|
+
// handle connect
|
|
637
|
+
//console.log('handle connect',peer)
|
|
638
|
+
},
|
|
639
|
+
onDisconnect: (peer, connection) => {
|
|
640
|
+
// handle disconnect
|
|
641
|
+
//console.log('handle disconnect',peer)
|
|
642
|
+
}
|
|
643
|
+
})
|
|
644
|
+
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
#findHybridPeer(){
|
|
648
|
+
setTimeout(async()=>{
|
|
649
|
+
for(const target of config.CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
|
|
650
|
+
if(!this.#isConnected(target) && !this.#connections.has(target) && this.#isDialEnabled ){
|
|
651
|
+
//console.log('findPeer',target)
|
|
652
|
+
const peerId = peerIdFromString(target)
|
|
653
|
+
//const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
|
|
654
|
+
|
|
655
|
+
//console.info(peerInfo)
|
|
656
|
+
for await (const event of this.#libp2p.services.aminoDHT.findPeer(peerId)){
|
|
657
|
+
//console.info('findPeer',event)
|
|
658
|
+
if (event.name === 'FINAL_PEER'){
|
|
659
|
+
//console.log(event.peer.id.toString(),event.peer.multiaddrs.toString())
|
|
660
|
+
let mddrs = []
|
|
661
|
+
let addrs = []
|
|
662
|
+
const id = event.peer.id.toString()
|
|
663
|
+
for(const mddr of event.peer.multiaddrs){
|
|
664
|
+
const peeraddr = mddr.toString()+'/p2p/'+id
|
|
665
|
+
const peermddr = multiaddr(peeraddr)
|
|
666
|
+
addrs.push(peeraddr)
|
|
667
|
+
mddrs.push(peermddr)
|
|
668
|
+
}
|
|
669
|
+
this.#dialedKnownBootstrap.set(id,addrs)
|
|
670
|
+
if(!this.#isConnected(id)){
|
|
671
|
+
this.#dialMultiaddress(mddrs)
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
},60e3)
|
|
678
|
+
}
|
|
679
|
+
|
|
545
680
|
|
|
546
681
|
//check the last seen in web peer
|
|
547
682
|
#trackLastSeen(){
|
|
@@ -603,7 +738,7 @@ class webpeerjs{
|
|
|
603
738
|
return
|
|
604
739
|
}
|
|
605
740
|
|
|
606
|
-
if(this.#webPeersId.includes(id) || id
|
|
741
|
+
if(this.#webPeersId.includes(id) || config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) || config.CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
|
|
607
742
|
this.#dialQueue.unshift(mddrs)
|
|
608
743
|
}
|
|
609
744
|
else{
|
|
@@ -618,7 +753,7 @@ class webpeerjs{
|
|
|
618
753
|
|
|
619
754
|
if(!this.#isDialEnabled)return
|
|
620
755
|
|
|
621
|
-
const mddrsToDial =
|
|
756
|
+
const mddrsToDial = 5
|
|
622
757
|
|
|
623
758
|
let queue = []
|
|
624
759
|
for(const item of this.#libp2p.getDialQueue()){
|
|
@@ -636,6 +771,8 @@ class webpeerjs{
|
|
|
636
771
|
|
|
637
772
|
if(this.#isConnected(id))continue
|
|
638
773
|
if(queue.includes(id)){continue;}
|
|
774
|
+
|
|
775
|
+
//console.log('dial',id)
|
|
639
776
|
|
|
640
777
|
//dial with webtransport
|
|
641
778
|
this.#dialWebtransport(mddrs)
|
|
@@ -718,7 +855,7 @@ class webpeerjs{
|
|
|
718
855
|
},
|
|
719
856
|
members : [this.id],
|
|
720
857
|
onMembers : () => {},
|
|
721
|
-
onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members)},
|
|
858
|
+
onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members);this.#ping()},
|
|
722
859
|
}
|
|
723
860
|
}
|
|
724
861
|
|
|
@@ -755,13 +892,15 @@ class webpeerjs{
|
|
|
755
892
|
#dialRandomBootstrap(){
|
|
756
893
|
setInterval(()=>{
|
|
757
894
|
//const keys = Array.from(this.#dialedKnownBootstrap.keys())
|
|
758
|
-
const keys = config.
|
|
895
|
+
const keys = config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS
|
|
759
896
|
const randomKey = Math.floor(Math.random() * keys.length)
|
|
760
897
|
let ids = []
|
|
761
898
|
ids.push(keys[randomKey])
|
|
762
899
|
|
|
763
900
|
//universal connectivity id for webpeer discovery and joinRoom version 1 to work
|
|
764
|
-
|
|
901
|
+
for(const id of config.CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
|
|
902
|
+
ids.push(id)
|
|
903
|
+
}
|
|
765
904
|
|
|
766
905
|
for(const id of ids){
|
|
767
906
|
if(id == undefined)continue
|
|
@@ -828,7 +967,7 @@ class webpeerjs{
|
|
|
828
967
|
if(besttime>bestlimit){
|
|
829
968
|
const addr = remote.toString()
|
|
830
969
|
const id = peer.toString()
|
|
831
|
-
if(!this.#webPeersId.includes(id) && !config.
|
|
970
|
+
if(!this.#webPeersId.includes(id) && !config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) && !this.#dbstoreData.get(id) && !addr.includes('p2p-circuit') && addr.includes('webtransport')){
|
|
832
971
|
//await this.#dbstore.delete(new Key(id))
|
|
833
972
|
await this.#dbstore.put(new Key(id), new TextEncoder().encode(addr))
|
|
834
973
|
this.#dbstoreData.set(id,addr)
|
|
@@ -897,7 +1036,7 @@ class webpeerjs{
|
|
|
897
1036
|
}
|
|
898
1037
|
}
|
|
899
1038
|
|
|
900
|
-
},
|
|
1039
|
+
},15*1000)
|
|
901
1040
|
}
|
|
902
1041
|
|
|
903
1042
|
|
|
@@ -920,27 +1059,32 @@ class webpeerjs{
|
|
|
920
1059
|
//dial to all known bootstrap peers and DNS
|
|
921
1060
|
#dialKnownPeers(){
|
|
922
1061
|
//this.#dialKnownBootstrap()
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
1062
|
+
setTimeout(()=>{
|
|
1063
|
+
this.#dialSavedKnownID()
|
|
1064
|
+
this.#findHybridPeer()
|
|
1065
|
+
setTimeout(()=>{this.#dialUpdateSavedKnownID()},50000)
|
|
1066
|
+
setTimeout(()=>{
|
|
1067
|
+
const peers = this.#libp2p.getPeers().length
|
|
1068
|
+
if(peers == 0){
|
|
1069
|
+
this.#dialKnownID()
|
|
1070
|
+
this.#findHybridPeer()
|
|
1071
|
+
setTimeout(()=>{
|
|
1072
|
+
const peers = this.#libp2p.getPeers().length
|
|
1073
|
+
if(peers == 0){
|
|
1074
|
+
//currently not needed
|
|
1075
|
+
//this.#dialKnownDNS()
|
|
1076
|
+
setTimeout(()=>{
|
|
1077
|
+
const peers = this.#libp2p.getPeers().length
|
|
1078
|
+
if(peers == 0){
|
|
1079
|
+
//currently not needed
|
|
1080
|
+
//this.#dialKnownDNSonly()
|
|
1081
|
+
}
|
|
1082
|
+
},15000)
|
|
1083
|
+
}
|
|
1084
|
+
},15000)
|
|
1085
|
+
}
|
|
1086
|
+
},15000)
|
|
1087
|
+
},5000)
|
|
944
1088
|
}
|
|
945
1089
|
|
|
946
1090
|
|
|
@@ -967,12 +1111,81 @@ class webpeerjs{
|
|
|
967
1111
|
}
|
|
968
1112
|
}
|
|
969
1113
|
|
|
1114
|
+
async #dialSavedKnownID(){
|
|
1115
|
+
let firsttime = true
|
|
1116
|
+
for(const target of config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
|
|
1117
|
+
if(this.#dbstoreData.has(target)){
|
|
1118
|
+
firsttime = false
|
|
1119
|
+
let mddrs = []
|
|
1120
|
+
let addrs = []
|
|
1121
|
+
const id = target
|
|
1122
|
+
const peeraddr = this.#dbstoreData.get(target)
|
|
1123
|
+
const peermddr = multiaddr(peeraddr)
|
|
1124
|
+
addrs.push(peeraddr)
|
|
1125
|
+
mddrs.push(peermddr)
|
|
1126
|
+
this.#dialedKnownBootstrap.set(id,addrs)
|
|
1127
|
+
if(!this.#isConnected(id)){
|
|
1128
|
+
this.#dialMultiaddress(mddrs)
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
if(firsttime){
|
|
1133
|
+
for(const target of config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
|
|
1134
|
+
const api = config.CONFIG_DELEGATED_API
|
|
1135
|
+
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api)
|
|
1136
|
+
const peer = await first(delegatedClient.getPeers(peerIdFromString(target)))
|
|
1137
|
+
const address = peer.Addrs
|
|
1138
|
+
const id = peer.ID
|
|
1139
|
+
let mddrs = []
|
|
1140
|
+
let addrs = []
|
|
1141
|
+
for(const addr of address){
|
|
1142
|
+
const peeraddr = addr.toString()+'/p2p/'+id.toString()
|
|
1143
|
+
const peermddr = multiaddr(peeraddr)
|
|
1144
|
+
addrs.push(peeraddr)
|
|
1145
|
+
mddrs.push(peermddr)
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
this.#dialedKnownBootstrap.set(id,addrs)
|
|
1149
|
+
if(!this.#isConnected(id)){
|
|
1150
|
+
this.#dialMultiaddress(mddrs)
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
async #dialUpdateSavedKnownID(){
|
|
1157
|
+
for(const target of config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
|
|
1158
|
+
if(!this.#connections.has(target) && this.#isDialEnabled && this.#dbstoreData.has(target)){
|
|
1159
|
+
//console.log('#dialUpdateSavedKnownID()',target)
|
|
1160
|
+
const api = config.CONFIG_DELEGATED_API
|
|
1161
|
+
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api)
|
|
1162
|
+
const peer = await first(delegatedClient.getPeers(peerIdFromString(target)))
|
|
1163
|
+
const address = peer.Addrs
|
|
1164
|
+
const id = peer.ID
|
|
1165
|
+
let mddrs = []
|
|
1166
|
+
let addrs = []
|
|
1167
|
+
for(const addr of address){
|
|
1168
|
+
const peeraddr = addr.toString()+'/p2p/'+id.toString()
|
|
1169
|
+
const peermddr = multiaddr(peeraddr)
|
|
1170
|
+
addrs.push(peeraddr)
|
|
1171
|
+
mddrs.push(peermddr)
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
this.#dialedKnownBootstrap.set(id,addrs)
|
|
1175
|
+
if(!this.#isConnected(id)){
|
|
1176
|
+
this.#dialMultiaddress(mddrs)
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
|
|
970
1182
|
|
|
971
1183
|
//dial based on known peers ID
|
|
972
1184
|
async #dialKnownID(){
|
|
1185
|
+
//console.log('#dialKnownID()')
|
|
973
1186
|
const api = config.CONFIG_DELEGATED_API
|
|
974
1187
|
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api)
|
|
975
|
-
const BOOTSTRAP_PEER_IDS = config.
|
|
1188
|
+
const BOOTSTRAP_PEER_IDS = config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS
|
|
976
1189
|
const peers = await Promise.all(
|
|
977
1190
|
BOOTSTRAP_PEER_IDS.map((peerId) => first(delegatedClient.getPeers(peerIdFromString(peerId)))),
|
|
978
1191
|
)
|
|
@@ -1090,7 +1303,7 @@ class webpeerjs{
|
|
|
1090
1303
|
return // if we succeed dialing the peer, no need to try another address
|
|
1091
1304
|
} catch (error) {
|
|
1092
1305
|
//console.log(`failed to dial webtransport multiaddr: %o`, addr.toString())
|
|
1093
|
-
|
|
1306
|
+
mkDebug(error)
|
|
1094
1307
|
}
|
|
1095
1308
|
}
|
|
1096
1309
|
}
|
|
@@ -1112,7 +1325,7 @@ class webpeerjs{
|
|
|
1112
1325
|
return // if we succeed dialing the peer, no need to try another address
|
|
1113
1326
|
} catch (error) {
|
|
1114
1327
|
//console.log(`failed to dial websocket multiaddr: %o`, addr)
|
|
1115
|
-
|
|
1328
|
+
mkDebug(error)
|
|
1116
1329
|
}
|
|
1117
1330
|
}
|
|
1118
1331
|
}
|
|
@@ -1122,7 +1335,7 @@ class webpeerjs{
|
|
|
1122
1335
|
static async createWebpeer(){
|
|
1123
1336
|
|
|
1124
1337
|
// all libp2p debug logs
|
|
1125
|
-
localStorage.setItem('debug', 'libp2p:*')
|
|
1338
|
+
//localStorage.setItem('debug', 'libp2p:*')
|
|
1126
1339
|
|
|
1127
1340
|
const dbstore = new IDBDatastore(config.CONFIG_DBSTORE_PATH)
|
|
1128
1341
|
await dbstore.open()
|