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.
@@ -19,34 +19,39 @@ import { simpleMetrics } from '@libp2p/simple-metrics';
19
19
 
20
20
  const prefix$1 = 'webpeerjs';
21
21
  const CONFIG_PREFIX = prefix$1;
22
+ const CONFIG_PROTOCOL = '/'+prefix$1+'/0.0.1';
22
23
  const CONFIG_DBSTORE_PATH = prefix$1+'-dbstore';
23
24
  const CONFIG_MAX_CONNECTIONS = 100;
24
25
  const CONFIG_MIN_CONNECTIONS = 0;
25
26
  const CONFIG_DISCOVER_RELAYS = 1;
26
27
  const CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY = 'universal-connectivity-browser-peer-discovery';
27
28
  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_PEER_DISCOVERY_WEBPEERJS= prefix$1+'-peer-discovery';
30
+ const CONFIG_PUBSUB_PEER_DISCOVERY = [CONFIG_PEER_DISCOVERY_GLOBAL, CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY, CONFIG_PEER_DISCOVERY_WEBPEERJS];
29
31
  const CONFIG_DELEGATED_API = 'https://delegated-ipfs.dev';
30
32
 
31
33
  const CONFIG_KNOWN_BOOTSTRAP_PEERS_ADDRS = [
32
34
  ];
33
35
 
34
- const CONFIG_KNOWN_BOOTSTRAP_PEER_IDS = [
35
- '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr',
36
- '12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
37
- '12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
38
- '12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
36
+ const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = [
39
37
  'QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',
40
- 'QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa',
41
38
  'QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
42
39
  'QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',
43
40
  'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
41
+ '12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
42
+ '12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
43
+ '12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
44
44
  '12D3KooWHh98YpAkJsn3ULjMjK1n9QVkXmi8Sb3gTDMatHxCmDP5',
45
45
  '12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj',
46
46
  '12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk',
47
47
  '12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL',
48
- '12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H'
49
- ];
48
+ '12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H',
49
+ '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
50
+ ];
51
+
52
+ const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
53
+ '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
54
+ ];
50
55
 
51
56
  /* eslint-disable import/export */
52
57
  /* eslint-disable complexity */
@@ -181,6 +186,7 @@ let lastStats = {
181
186
 
182
187
  let isDialEnabled = true;
183
188
  let lastfailtreshold = 0;
189
+ let fail = 0;
184
190
 
185
191
  function metrics(data){
186
192
  try{
@@ -233,29 +239,29 @@ function metrics(data){
233
239
 
234
240
  lastStats = webTransportEvents;
235
241
 
236
- const fail = errors+timeouts;
242
+ fail = errors+timeouts;
237
243
  const treshold = errors+timeouts+stats.open+stats.pending;
238
244
 
239
- if(treshold>60){
245
+ if(treshold>40){
240
246
  //console.log(`Treeshold hit : ${treshold}`)
241
247
  }
242
248
 
243
- if(fail>60){
249
+ if(fail>40){
244
250
  //console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
245
251
 
246
252
  }
247
253
 
248
- if ((fail-lastfailtreshold)>30){
254
+ if ((fail-lastfailtreshold)>40){
249
255
  if(isDialEnabled){
250
256
  isDialEnabled = false;
251
257
  const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
252
- console.warn(str);
258
+ console.warn('dial disabled');
253
259
  setTimeout(()=>{
254
260
  if(!isDialEnabled){
255
261
  isDialEnabled = true;
256
262
  lastfailtreshold = fail;
257
263
  const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
258
- console.warn(str);
264
+ console.warn('dial enabled');
259
265
  }
260
266
  },6*60*1000);
261
267
  }
@@ -372,20 +378,27 @@ class webpeerjs{
372
378
 
373
379
 
374
380
  //listen to peer connect event
375
- this.#libp2p.addEventListener("peer:connect", (evt) => {
376
-
377
- //console.log(`Connected to ${connection.toString()}`);
381
+ this.#libp2p.addEventListener("peer:connect",async (evt) => {
378
382
 
379
- const connection = evt.detail;
383
+ evt.detail;
380
384
  const id = evt.detail.toString();
381
385
 
386
+ //console.log('peer:connect '+id,evt)
387
+
382
388
  const connections = this.#libp2p.getConnections().map((con)=>{return {id:con.remotePeer.toString(),addr:con.remoteAddr.toString()}});
383
389
  const connect = connections.find((con)=>con.id == id);
384
390
  const addr = connect.addr;
391
+
392
+ if(CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) || CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
393
+ if(!this.#connections.has(id)&&addr.includes('webtransport')){
394
+ await this.#dbstore.put(new Key(id), new TextEncoder().encode(addr));
395
+ }
396
+ }
397
+
385
398
  this.#connections.set(id,addr);
386
399
 
387
400
  //required by joinRoom version 1 to announce via universal connectivity
388
- if(connection.toString() === CONFIG_KNOWN_BOOTSTRAP_PEER_IDS[0]){
401
+ if(CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
389
402
  setTimeout(()=>{
390
403
  this.#announce();
391
404
  setTimeout(()=>{
@@ -394,6 +407,31 @@ class webpeerjs{
394
407
  },1000);
395
408
  }
396
409
 
410
+ if(this.#webPeersId.includes(id)){
411
+
412
+ let address = [addr];
413
+
414
+ if(this.#connectedPeers.has(id)){
415
+ //reset this last seen
416
+ const now = new Date().getTime();
417
+ const metadata = {addrs:address,last:now};
418
+ this.#connectedPeers.set(id,metadata);
419
+ }
420
+ else {
421
+ //add to connected webpeers
422
+ this.#onConnectFn(id);
423
+ const now = new Date().getTime();
424
+ const metadata = {addrs:address,last:now};
425
+ this.#connectedPeers.set(id,metadata);
426
+ this.#connectedPeersArr.length = 0;
427
+ for(const peer of this.#connectedPeers){
428
+ const item = {id:peer[0],address:peer[1].addrs};
429
+ this.#connectedPeersArr.push(item);
430
+ }
431
+ }
432
+
433
+ }
434
+
397
435
  });
398
436
 
399
437
 
@@ -430,6 +468,11 @@ class webpeerjs{
430
468
  const now = new Date().getTime();
431
469
  const metadata = {addrs:address,last:now};
432
470
  this.#connectedPeers.set(senderPeerId,metadata);
471
+ this.#connectedPeersArr.length = 0;
472
+ for(const peer of this.#connectedPeers){
473
+ const item = {id:peer[0],address:peer[1].addrs};
474
+ this.#connectedPeersArr.push(item);
475
+ }
433
476
  }
434
477
 
435
478
  //dial if not connected
@@ -545,22 +588,20 @@ class webpeerjs{
545
588
  }
546
589
 
547
590
  //update connected webpeers
548
- const now = new Date().getTime();
549
- const metadata = {addrs:address,last:now};
550
- this.#connectedPeers.set(id,metadata);
551
- this.#webPeersAddrs.set(id,address);
552
- this.#connectedPeersArr.length = 0;
591
+ /*const now = new Date().getTime()
592
+ const metadata = {addrs:address,last:now}
593
+ this.#connectedPeers.set(id,metadata)
594
+ this.#webPeersAddrs.set(id,address)
595
+ this.#connectedPeersArr.length = 0
553
596
  for(const peer of this.#connectedPeers){
554
- const item = {id:peer[0],address:peer[1].addrs};
555
- this.#connectedPeersArr.push(item);
556
- }
597
+ const item = {id:peer[0],address:peer[1].addrs}
598
+ this.#connectedPeersArr.push(item)
599
+ }*/
557
600
 
558
601
  }
559
602
  }
560
603
 
561
604
  }catch(err){
562
- //console.log('from '+event.detail.from.toString())
563
- console.debug(err);
564
605
  }
565
606
  }else {
566
607
  const json = JSON.parse(topic);
@@ -606,10 +647,12 @@ class webpeerjs{
606
647
  if(multiaddrs.toString().includes('certhash')&& multiaddrs.toString().includes('webtransport') && multiaddrs.toString().includes('p2p-circuit')){
607
648
  //console.log(addrs)
608
649
  if(!this.#connections.has(id)){
650
+ let mddrs = [];
609
651
  for(const addr of addrs){
610
- multiaddr(addr);
652
+ const mddr = multiaddr(addr);
653
+ mddrs.push(mddr);
611
654
  }
612
- //this.#dialMultiaddress(mddrs)
655
+ this.#dialMultiaddress(mddrs);
613
656
  }
614
657
  }
615
658
  }
@@ -666,10 +709,8 @@ class webpeerjs{
666
709
  //redial if this disconnected peer is regular peer
667
710
  else {
668
711
  const addr = this.#connections.get(id);
669
- let mddrs = [];
670
- const addrs = multiaddr(addr);
671
- mddrs.push(addrs);
672
- this.#dialMultiaddress(mddrs);
712
+ multiaddr(addr);
713
+ //this.#dialMultiaddress(mddrs)
673
714
  }
674
715
  });
675
716
 
@@ -691,6 +732,45 @@ class webpeerjs{
691
732
  this.#ping();
692
733
  });
693
734
 
735
+ this.#libp2p.addEventListener('peer:identify', (evt) => {
736
+ //console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
737
+ if(evt.detail.protocols.includes(CONFIG_PROTOCOL)){
738
+ //console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
739
+
740
+ const id = evt.detail.peerId.toString();
741
+ let address = [];
742
+
743
+ for(const addrs of evt.detail.listenAddrs){
744
+ const addr = addrs.toString()+'/p2p/'+id;
745
+ if(addr.includes('webtransport')){
746
+ address.push(addr);
747
+ }
748
+ }
749
+
750
+ if(!this.#webPeersId.includes(id))this.#webPeersId.push(id);
751
+
752
+ if(this.#connectedPeers.has(id)){
753
+ //reset this last seen
754
+ const now = new Date().getTime();
755
+ const metadata = {addrs:address,last:now};
756
+ this.#connectedPeers.set(id,metadata);
757
+ }
758
+ else {
759
+ //add to connected webpeers
760
+ this.#onConnectFn(id);
761
+ const now = new Date().getTime();
762
+ const metadata = {addrs:address,last:now};
763
+ this.#connectedPeers.set(id,metadata);
764
+ this.#connectedPeersArr.length = 0;
765
+ for(const peer of this.#connectedPeers){
766
+ const item = {id:peer[0],address:peer[1].addrs};
767
+ this.#connectedPeersArr.push(item);
768
+ }
769
+ }
770
+
771
+ }
772
+ });
773
+
694
774
  //dial known peers from configuration
695
775
  this.#dialKnownPeers();
696
776
 
@@ -705,6 +785,9 @@ class webpeerjs{
705
785
 
706
786
  //dial random discovered peers
707
787
  //this.#dialdiscoveredpeers()
788
+
789
+ this.#registerProtocol();
790
+
708
791
 
709
792
  onMetrics((data)=>{
710
793
  const signal = metrics(data);
@@ -724,16 +807,7 @@ class webpeerjs{
724
807
  setInterval(()=>{
725
808
  this.#trackLastSeen();
726
809
  },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);
810
+
737
811
 
738
812
  /*setTimeout(async()=>{
739
813
  try{
@@ -754,6 +828,14 @@ class webpeerjs{
754
828
  }
755
829
  },60e3)*/
756
830
 
831
+ /*setTimeout(async()=>{
832
+ const key = uint8ArrayFromString(config.CONFIG_PREFIX)
833
+ const value = uint8ArrayFromString(this.id)
834
+ for await (const event of this.#libp2p.services.aminoDHT.put(key,value)){
835
+ console.log('put',event)
836
+ }
837
+ },30e3)*/
838
+
757
839
  }
758
840
 
759
841
 
@@ -779,6 +861,62 @@ class webpeerjs{
779
861
  PRIVATE FUNCTION
780
862
  */
781
863
 
864
+ async #registerProtocol(){
865
+ const handler = ({ connection, stream, protocol }) => {
866
+ // use stream or connection according to the needs
867
+ };
868
+
869
+ await this.#libp2p.handle(CONFIG_PROTOCOL, handler, {
870
+ maxInboundStreams: 5,
871
+ maxOutboundStreams: 5
872
+ });
873
+
874
+ await this.#libp2p.register(CONFIG_PROTOCOL, {
875
+ onConnect: (peer, connection) => {
876
+ // handle connect
877
+ //console.log('handle connect',peer)
878
+ },
879
+ onDisconnect: (peer, connection) => {
880
+ // handle disconnect
881
+ //console.log('handle disconnect',peer)
882
+ }
883
+ });
884
+
885
+ }
886
+
887
+ #findHybridPeer(){
888
+ setTimeout(async()=>{
889
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
890
+ if(!this.#isConnected(target) && !this.#connections.has(target) && this.#isDialEnabled ){
891
+ //console.log('findPeer',target)
892
+ const peerId = peerIdFromString(target);
893
+ //const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
894
+
895
+ //console.info(peerInfo)
896
+ for await (const event of this.#libp2p.services.aminoDHT.findPeer(peerId)){
897
+ //console.info('findPeer',event)
898
+ if (event.name === 'FINAL_PEER'){
899
+ //console.log(event.peer.id.toString(),event.peer.multiaddrs.toString())
900
+ let mddrs = [];
901
+ let addrs = [];
902
+ const id = event.peer.id.toString();
903
+ for(const mddr of event.peer.multiaddrs){
904
+ const peeraddr = mddr.toString()+'/p2p/'+id;
905
+ const peermddr = multiaddr(peeraddr);
906
+ addrs.push(peeraddr);
907
+ mddrs.push(peermddr);
908
+ }
909
+ this.#dialedKnownBootstrap.set(id,addrs);
910
+ if(!this.#isConnected(id)){
911
+ this.#dialMultiaddress(mddrs);
912
+ }
913
+ }
914
+ }
915
+ }
916
+ }
917
+ },60e3);
918
+ }
919
+
782
920
 
783
921
  //check the last seen in web peer
784
922
  #trackLastSeen(){
@@ -840,7 +978,7 @@ class webpeerjs{
840
978
  return
841
979
  }
842
980
 
843
- if(this.#webPeersId.includes(id) || id == CONFIG_KNOWN_BOOTSTRAP_PEER_IDS[0] ){
981
+ if(this.#webPeersId.includes(id) || CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) || CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
844
982
  this.#dialQueue.unshift(mddrs);
845
983
  }
846
984
  else {
@@ -855,7 +993,7 @@ class webpeerjs{
855
993
 
856
994
  if(!this.#isDialEnabled)return
857
995
 
858
- const mddrsToDial = 3;
996
+ const mddrsToDial = 5;
859
997
 
860
998
  let queue = [];
861
999
  for(const item of this.#libp2p.getDialQueue()){
@@ -873,6 +1011,8 @@ class webpeerjs{
873
1011
 
874
1012
  if(this.#isConnected(id))continue
875
1013
  if(queue.includes(id)){continue;}
1014
+
1015
+ //console.log('dial',id)
876
1016
 
877
1017
  //dial with webtransport
878
1018
  this.#dialWebtransport(mddrs);
@@ -955,7 +1095,7 @@ class webpeerjs{
955
1095
  },
956
1096
  members : [this.id],
957
1097
  onMembers : () => {},
958
- onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members);},
1098
+ onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members);this.#ping();},
959
1099
  };
960
1100
  }
961
1101
 
@@ -992,13 +1132,15 @@ class webpeerjs{
992
1132
  #dialRandomBootstrap(){
993
1133
  setInterval(()=>{
994
1134
  //const keys = Array.from(this.#dialedKnownBootstrap.keys())
995
- const keys = CONFIG_KNOWN_BOOTSTRAP_PEER_IDS;
1135
+ const keys = CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS;
996
1136
  const randomKey = Math.floor(Math.random() * keys.length);
997
1137
  let ids = [];
998
1138
  ids.push(keys[randomKey]);
999
1139
 
1000
1140
  //universal connectivity id for webpeer discovery and joinRoom version 1 to work
1001
- ids.push(CONFIG_KNOWN_BOOTSTRAP_PEER_IDS[0]);
1141
+ for(const id of CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
1142
+ ids.push(id);
1143
+ }
1002
1144
 
1003
1145
  for(const id of ids){
1004
1146
  if(id == undefined)continue
@@ -1065,7 +1207,7 @@ class webpeerjs{
1065
1207
  if(besttime>bestlimit){
1066
1208
  const addr = remote.toString();
1067
1209
  const id = peer.toString();
1068
- if(!this.#webPeersId.includes(id) && !CONFIG_KNOWN_BOOTSTRAP_PEER_IDS.includes(id) && !this.#dbstoreData.get(id) && !addr.includes('p2p-circuit')){
1210
+ if(!this.#webPeersId.includes(id) && !CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) && !this.#dbstoreData.get(id) && !addr.includes('p2p-circuit') && addr.includes('webtransport')){
1069
1211
  //await this.#dbstore.delete(new Key(id))
1070
1212
  await this.#dbstore.put(new Key(id), new TextEncoder().encode(addr));
1071
1213
  this.#dbstoreData.set(id,addr);
@@ -1134,7 +1276,7 @@ class webpeerjs{
1134
1276
  }
1135
1277
  }
1136
1278
 
1137
- },30*1000);
1279
+ },15*1000);
1138
1280
  }
1139
1281
 
1140
1282
 
@@ -1157,23 +1299,28 @@ class webpeerjs{
1157
1299
  //dial to all known bootstrap peers and DNS
1158
1300
  #dialKnownPeers(){
1159
1301
  //this.#dialKnownBootstrap()
1160
- //setTimeout(()=>{
1161
- //const peers = this.#libp2p.getPeers().length
1162
- //if(peers == 0){
1163
- //currently not needed
1164
- this.#dialKnownID();
1165
- setTimeout(()=>{
1166
- const peers = this.#libp2p.getPeers().length;
1167
- if(peers == 0){
1168
- //currently not needed
1169
- //this.#dialKnownDNS()
1170
- setTimeout(()=>{
1171
- this.#libp2p.getPeers().length;
1172
- },15000);
1173
- }
1174
- },15000);
1175
- //}
1176
- //},15000)
1302
+ setTimeout(()=>{
1303
+ this.#dialSavedKnownID();
1304
+ this.#findHybridPeer();
1305
+ setTimeout(()=>{this.#dialUpdateSavedKnownID();},50000);
1306
+ setTimeout(()=>{
1307
+ const peers = this.#libp2p.getPeers().length;
1308
+ if(peers == 0){
1309
+ this.#dialKnownID();
1310
+ this.#findHybridPeer();
1311
+ setTimeout(()=>{
1312
+ const peers = this.#libp2p.getPeers().length;
1313
+ if(peers == 0){
1314
+ //currently not needed
1315
+ //this.#dialKnownDNS()
1316
+ setTimeout(()=>{
1317
+ this.#libp2p.getPeers().length;
1318
+ },15000);
1319
+ }
1320
+ },15000);
1321
+ }
1322
+ },15000);
1323
+ },5000);
1177
1324
  }
1178
1325
 
1179
1326
 
@@ -1200,12 +1347,81 @@ class webpeerjs{
1200
1347
  }
1201
1348
  }
1202
1349
 
1350
+ async #dialSavedKnownID(){
1351
+ let firsttime = true;
1352
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
1353
+ if(this.#dbstoreData.has(target)){
1354
+ firsttime = false;
1355
+ let mddrs = [];
1356
+ let addrs = [];
1357
+ const id = target;
1358
+ const peeraddr = this.#dbstoreData.get(target);
1359
+ const peermddr = multiaddr(peeraddr);
1360
+ addrs.push(peeraddr);
1361
+ mddrs.push(peermddr);
1362
+ this.#dialedKnownBootstrap.set(id,addrs);
1363
+ if(!this.#isConnected(id)){
1364
+ this.#dialMultiaddress(mddrs);
1365
+ }
1366
+ }
1367
+ }
1368
+ if(firsttime){
1369
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
1370
+ const api = CONFIG_DELEGATED_API;
1371
+ const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
1372
+ const peer = await first(delegatedClient.getPeers(peerIdFromString(target)));
1373
+ const address = peer.Addrs;
1374
+ const id = peer.ID;
1375
+ let mddrs = [];
1376
+ let addrs = [];
1377
+ for(const addr of address){
1378
+ const peeraddr = addr.toString()+'/p2p/'+id.toString();
1379
+ const peermddr = multiaddr(peeraddr);
1380
+ addrs.push(peeraddr);
1381
+ mddrs.push(peermddr);
1382
+ }
1383
+
1384
+ this.#dialedKnownBootstrap.set(id,addrs);
1385
+ if(!this.#isConnected(id)){
1386
+ this.#dialMultiaddress(mddrs);
1387
+ }
1388
+ }
1389
+ }
1390
+ }
1391
+
1392
+ async #dialUpdateSavedKnownID(){
1393
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
1394
+ if(!this.#connections.has(target) && this.#isDialEnabled && this.#dbstoreData.has(target)){
1395
+ //console.log('#dialUpdateSavedKnownID()',target)
1396
+ const api = CONFIG_DELEGATED_API;
1397
+ const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
1398
+ const peer = await first(delegatedClient.getPeers(peerIdFromString(target)));
1399
+ const address = peer.Addrs;
1400
+ const id = peer.ID;
1401
+ let mddrs = [];
1402
+ let addrs = [];
1403
+ for(const addr of address){
1404
+ const peeraddr = addr.toString()+'/p2p/'+id.toString();
1405
+ const peermddr = multiaddr(peeraddr);
1406
+ addrs.push(peeraddr);
1407
+ mddrs.push(peermddr);
1408
+ }
1409
+
1410
+ this.#dialedKnownBootstrap.set(id,addrs);
1411
+ if(!this.#isConnected(id)){
1412
+ this.#dialMultiaddress(mddrs);
1413
+ }
1414
+ }
1415
+ }
1416
+ }
1417
+
1203
1418
 
1204
1419
  //dial based on known peers ID
1205
1420
  async #dialKnownID(){
1421
+ //console.log('#dialKnownID()')
1206
1422
  const api = CONFIG_DELEGATED_API;
1207
1423
  const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
1208
- const BOOTSTRAP_PEER_IDS = CONFIG_KNOWN_BOOTSTRAP_PEER_IDS;
1424
+ const BOOTSTRAP_PEER_IDS = CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS;
1209
1425
  const peers = await Promise.all(
1210
1426
  BOOTSTRAP_PEER_IDS.map((peerId) => first(delegatedClient.getPeers(peerIdFromString(peerId)))),
1211
1427
  );
@@ -1322,8 +1538,6 @@ class webpeerjs{
1322
1538
  await this.#libp2p.dial(addr);
1323
1539
  return // if we succeed dialing the peer, no need to try another address
1324
1540
  } catch (error) {
1325
- //console.log(`failed to dial webtransport multiaddr: %o`, addr.toString())
1326
- console.debug(error);
1327
1541
  }
1328
1542
  }
1329
1543
  }
@@ -1344,8 +1558,6 @@ class webpeerjs{
1344
1558
  await this.#libp2p.dial(addr);
1345
1559
  return // if we succeed dialing the peer, no need to try another address
1346
1560
  } catch (error) {
1347
- //console.log(`failed to dial websocket multiaddr: %o`, addr)
1348
- console.debug(error);
1349
1561
  }
1350
1562
  }
1351
1563
  }
@@ -1355,7 +1567,7 @@ class webpeerjs{
1355
1567
  static async createWebpeer(){
1356
1568
 
1357
1569
  // all libp2p debug logs
1358
- localStorage.setItem('debug', 'libp2p:*');
1570
+ //localStorage.setItem('debug', 'libp2p:*')
1359
1571
 
1360
1572
  const dbstore = new IDBDatastore(CONFIG_DBSTORE_PATH);
1361
1573
  await dbstore.open();