webpeerjs 0.0.6 → 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 +128 -27
- package/dist/umd/webpeerjs.js +128 -27
- package/package.json +1 -1
- package/src/config.js +3 -2
- package/src/utils.js +3 -3
- package/src/webpeerjs.js +112 -12
package/dist/esm/webpeerjs.js
CHANGED
|
@@ -19,6 +19,7 @@ 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;
|
|
@@ -37,7 +38,6 @@ const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = [
|
|
|
37
38
|
'QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
|
|
38
39
|
'QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',
|
|
39
40
|
'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
|
|
40
|
-
'12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr',
|
|
41
41
|
'12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
|
|
42
42
|
'12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
|
|
43
43
|
'12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
|
|
@@ -45,7 +45,8 @@ const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = [
|
|
|
45
45
|
'12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj',
|
|
46
46
|
'12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk',
|
|
47
47
|
'12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL',
|
|
48
|
-
'12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H'
|
|
48
|
+
'12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H',
|
|
49
|
+
'12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
|
|
49
50
|
];
|
|
50
51
|
|
|
51
52
|
const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
|
|
@@ -241,16 +242,16 @@ function metrics(data){
|
|
|
241
242
|
fail = errors+timeouts;
|
|
242
243
|
const treshold = errors+timeouts+stats.open+stats.pending;
|
|
243
244
|
|
|
244
|
-
if(treshold>
|
|
245
|
+
if(treshold>40){
|
|
245
246
|
//console.log(`Treeshold hit : ${treshold}`)
|
|
246
247
|
}
|
|
247
248
|
|
|
248
|
-
if(fail>
|
|
249
|
+
if(fail>40){
|
|
249
250
|
//console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
|
|
250
251
|
|
|
251
252
|
}
|
|
252
253
|
|
|
253
|
-
if ((fail-lastfailtreshold)>
|
|
254
|
+
if ((fail-lastfailtreshold)>40){
|
|
254
255
|
if(isDialEnabled){
|
|
255
256
|
isDialEnabled = false;
|
|
256
257
|
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
|
|
@@ -379,11 +380,11 @@ class webpeerjs{
|
|
|
379
380
|
//listen to peer connect event
|
|
380
381
|
this.#libp2p.addEventListener("peer:connect",async (evt) => {
|
|
381
382
|
|
|
382
|
-
//console.log(`Connected to ${connection.toString()}`);
|
|
383
|
-
|
|
384
383
|
evt.detail;
|
|
385
384
|
const id = evt.detail.toString();
|
|
386
385
|
|
|
386
|
+
//console.log('peer:connect '+id,evt)
|
|
387
|
+
|
|
387
388
|
const connections = this.#libp2p.getConnections().map((con)=>{return {id:con.remotePeer.toString(),addr:con.remoteAddr.toString()}});
|
|
388
389
|
const connect = connections.find((con)=>con.id == id);
|
|
389
390
|
const addr = connect.addr;
|
|
@@ -406,6 +407,31 @@ class webpeerjs{
|
|
|
406
407
|
},1000);
|
|
407
408
|
}
|
|
408
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
|
+
|
|
409
435
|
});
|
|
410
436
|
|
|
411
437
|
|
|
@@ -562,15 +588,15 @@ class webpeerjs{
|
|
|
562
588
|
}
|
|
563
589
|
|
|
564
590
|
//update connected webpeers
|
|
565
|
-
const now = new Date().getTime()
|
|
566
|
-
const metadata = {addrs:address,last:now}
|
|
567
|
-
this.#connectedPeers.set(id,metadata)
|
|
568
|
-
this.#webPeersAddrs.set(id,address)
|
|
569
|
-
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
|
|
570
596
|
for(const peer of this.#connectedPeers){
|
|
571
|
-
const item = {id:peer[0],address:peer[1].addrs}
|
|
572
|
-
this.#connectedPeersArr.push(item)
|
|
573
|
-
}
|
|
597
|
+
const item = {id:peer[0],address:peer[1].addrs}
|
|
598
|
+
this.#connectedPeersArr.push(item)
|
|
599
|
+
}*/
|
|
574
600
|
|
|
575
601
|
}
|
|
576
602
|
}
|
|
@@ -621,10 +647,12 @@ class webpeerjs{
|
|
|
621
647
|
if(multiaddrs.toString().includes('certhash')&& multiaddrs.toString().includes('webtransport') && multiaddrs.toString().includes('p2p-circuit')){
|
|
622
648
|
//console.log(addrs)
|
|
623
649
|
if(!this.#connections.has(id)){
|
|
650
|
+
let mddrs = [];
|
|
624
651
|
for(const addr of addrs){
|
|
625
|
-
multiaddr(addr);
|
|
652
|
+
const mddr = multiaddr(addr);
|
|
653
|
+
mddrs.push(mddr);
|
|
626
654
|
}
|
|
627
|
-
|
|
655
|
+
this.#dialMultiaddress(mddrs);
|
|
628
656
|
}
|
|
629
657
|
}
|
|
630
658
|
}
|
|
@@ -681,10 +709,8 @@ class webpeerjs{
|
|
|
681
709
|
//redial if this disconnected peer is regular peer
|
|
682
710
|
else {
|
|
683
711
|
const addr = this.#connections.get(id);
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
mddrs.push(addrs);
|
|
687
|
-
this.#dialMultiaddress(mddrs);
|
|
712
|
+
multiaddr(addr);
|
|
713
|
+
//this.#dialMultiaddress(mddrs)
|
|
688
714
|
}
|
|
689
715
|
});
|
|
690
716
|
|
|
@@ -706,6 +732,45 @@ class webpeerjs{
|
|
|
706
732
|
this.#ping();
|
|
707
733
|
});
|
|
708
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
|
+
|
|
709
774
|
//dial known peers from configuration
|
|
710
775
|
this.#dialKnownPeers();
|
|
711
776
|
|
|
@@ -721,6 +786,8 @@ class webpeerjs{
|
|
|
721
786
|
//dial random discovered peers
|
|
722
787
|
//this.#dialdiscoveredpeers()
|
|
723
788
|
|
|
789
|
+
this.#registerProtocol();
|
|
790
|
+
|
|
724
791
|
|
|
725
792
|
onMetrics((data)=>{
|
|
726
793
|
const signal = metrics(data);
|
|
@@ -761,6 +828,14 @@ class webpeerjs{
|
|
|
761
828
|
}
|
|
762
829
|
},60e3)*/
|
|
763
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
|
+
|
|
764
839
|
}
|
|
765
840
|
|
|
766
841
|
|
|
@@ -786,10 +861,33 @@ class webpeerjs{
|
|
|
786
861
|
PRIVATE FUNCTION
|
|
787
862
|
*/
|
|
788
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
|
+
|
|
789
887
|
#findHybridPeer(){
|
|
790
888
|
setTimeout(async()=>{
|
|
791
889
|
for(const target of CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
|
|
792
|
-
if(!this.#isConnected(target)){
|
|
890
|
+
if(!this.#isConnected(target) && !this.#connections.has(target) && this.#isDialEnabled ){
|
|
793
891
|
//console.log('findPeer',target)
|
|
794
892
|
const peerId = peerIdFromString(target);
|
|
795
893
|
//const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
|
|
@@ -816,7 +914,7 @@ class webpeerjs{
|
|
|
816
914
|
}
|
|
817
915
|
}
|
|
818
916
|
}
|
|
819
|
-
},
|
|
917
|
+
},60e3);
|
|
820
918
|
}
|
|
821
919
|
|
|
822
920
|
|
|
@@ -895,7 +993,7 @@ class webpeerjs{
|
|
|
895
993
|
|
|
896
994
|
if(!this.#isDialEnabled)return
|
|
897
995
|
|
|
898
|
-
const mddrsToDial =
|
|
996
|
+
const mddrsToDial = 5;
|
|
899
997
|
|
|
900
998
|
let queue = [];
|
|
901
999
|
for(const item of this.#libp2p.getDialQueue()){
|
|
@@ -913,6 +1011,8 @@ class webpeerjs{
|
|
|
913
1011
|
|
|
914
1012
|
if(this.#isConnected(id))continue
|
|
915
1013
|
if(queue.includes(id)){continue;}
|
|
1014
|
+
|
|
1015
|
+
//console.log('dial',id)
|
|
916
1016
|
|
|
917
1017
|
//dial with webtransport
|
|
918
1018
|
this.#dialWebtransport(mddrs);
|
|
@@ -995,7 +1095,7 @@ class webpeerjs{
|
|
|
995
1095
|
},
|
|
996
1096
|
members : [this.id],
|
|
997
1097
|
onMembers : () => {},
|
|
998
|
-
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();},
|
|
999
1099
|
};
|
|
1000
1100
|
}
|
|
1001
1101
|
|
|
@@ -1202,7 +1302,7 @@ class webpeerjs{
|
|
|
1202
1302
|
setTimeout(()=>{
|
|
1203
1303
|
this.#dialSavedKnownID();
|
|
1204
1304
|
this.#findHybridPeer();
|
|
1205
|
-
setTimeout(()=>{this.#dialUpdateSavedKnownID();},
|
|
1305
|
+
setTimeout(()=>{this.#dialUpdateSavedKnownID();},50000);
|
|
1206
1306
|
setTimeout(()=>{
|
|
1207
1307
|
const peers = this.#libp2p.getPeers().length;
|
|
1208
1308
|
if(peers == 0){
|
|
@@ -1291,7 +1391,8 @@ class webpeerjs{
|
|
|
1291
1391
|
|
|
1292
1392
|
async #dialUpdateSavedKnownID(){
|
|
1293
1393
|
for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
|
|
1294
|
-
if(!this.#connections.has(target)){
|
|
1394
|
+
if(!this.#connections.has(target) && this.#isDialEnabled && this.#dbstoreData.has(target)){
|
|
1395
|
+
//console.log('#dialUpdateSavedKnownID()',target)
|
|
1295
1396
|
const api = CONFIG_DELEGATED_API;
|
|
1296
1397
|
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
|
|
1297
1398
|
const peer = await first(delegatedClient.getPeers(peerIdFromString(target)));
|
package/dist/umd/webpeerjs.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
const prefix$1 = 'webpeerjs';
|
|
8
8
|
const CONFIG_PREFIX = prefix$1;
|
|
9
|
+
const CONFIG_PROTOCOL = '/'+prefix$1+'/0.0.1';
|
|
9
10
|
const CONFIG_DBSTORE_PATH = prefix$1+'-dbstore';
|
|
10
11
|
const CONFIG_MAX_CONNECTIONS = 100;
|
|
11
12
|
const CONFIG_MIN_CONNECTIONS = 0;
|
|
@@ -24,7 +25,6 @@
|
|
|
24
25
|
'QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
|
|
25
26
|
'QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',
|
|
26
27
|
'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
|
|
27
|
-
'12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr',
|
|
28
28
|
'12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
|
|
29
29
|
'12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
|
|
30
30
|
'12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
|
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
'12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj',
|
|
33
33
|
'12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk',
|
|
34
34
|
'12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL',
|
|
35
|
-
'12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H'
|
|
35
|
+
'12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H',
|
|
36
|
+
'12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
|
|
36
37
|
];
|
|
37
38
|
|
|
38
39
|
const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
|
|
@@ -3350,16 +3351,16 @@
|
|
|
3350
3351
|
fail = errors+timeouts;
|
|
3351
3352
|
const treshold = errors+timeouts+stats.open+stats.pending;
|
|
3352
3353
|
|
|
3353
|
-
if(treshold>
|
|
3354
|
+
if(treshold>40){
|
|
3354
3355
|
//console.log(`Treeshold hit : ${treshold}`)
|
|
3355
3356
|
}
|
|
3356
3357
|
|
|
3357
|
-
if(fail>
|
|
3358
|
+
if(fail>40){
|
|
3358
3359
|
//console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
|
|
3359
3360
|
|
|
3360
3361
|
}
|
|
3361
3362
|
|
|
3362
|
-
if ((fail-lastfailtreshold)>
|
|
3363
|
+
if ((fail-lastfailtreshold)>40){
|
|
3363
3364
|
if(isDialEnabled){
|
|
3364
3365
|
isDialEnabled = false;
|
|
3365
3366
|
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
|
|
@@ -46164,11 +46165,11 @@
|
|
|
46164
46165
|
//listen to peer connect event
|
|
46165
46166
|
this.#libp2p.addEventListener("peer:connect",async (evt) => {
|
|
46166
46167
|
|
|
46167
|
-
//console.log(`Connected to ${connection.toString()}`);
|
|
46168
|
-
|
|
46169
46168
|
evt.detail;
|
|
46170
46169
|
const id = evt.detail.toString();
|
|
46171
46170
|
|
|
46171
|
+
//console.log('peer:connect '+id,evt)
|
|
46172
|
+
|
|
46172
46173
|
const connections = this.#libp2p.getConnections().map((con)=>{return {id:con.remotePeer.toString(),addr:con.remoteAddr.toString()}});
|
|
46173
46174
|
const connect = connections.find((con)=>con.id == id);
|
|
46174
46175
|
const addr = connect.addr;
|
|
@@ -46191,6 +46192,31 @@
|
|
|
46191
46192
|
},1000);
|
|
46192
46193
|
}
|
|
46193
46194
|
|
|
46195
|
+
if(this.#webPeersId.includes(id)){
|
|
46196
|
+
|
|
46197
|
+
let address = [addr];
|
|
46198
|
+
|
|
46199
|
+
if(this.#connectedPeers.has(id)){
|
|
46200
|
+
//reset this last seen
|
|
46201
|
+
const now = new Date().getTime();
|
|
46202
|
+
const metadata = {addrs:address,last:now};
|
|
46203
|
+
this.#connectedPeers.set(id,metadata);
|
|
46204
|
+
}
|
|
46205
|
+
else {
|
|
46206
|
+
//add to connected webpeers
|
|
46207
|
+
this.#onConnectFn(id);
|
|
46208
|
+
const now = new Date().getTime();
|
|
46209
|
+
const metadata = {addrs:address,last:now};
|
|
46210
|
+
this.#connectedPeers.set(id,metadata);
|
|
46211
|
+
this.#connectedPeersArr.length = 0;
|
|
46212
|
+
for(const peer of this.#connectedPeers){
|
|
46213
|
+
const item = {id:peer[0],address:peer[1].addrs};
|
|
46214
|
+
this.#connectedPeersArr.push(item);
|
|
46215
|
+
}
|
|
46216
|
+
}
|
|
46217
|
+
|
|
46218
|
+
}
|
|
46219
|
+
|
|
46194
46220
|
});
|
|
46195
46221
|
|
|
46196
46222
|
|
|
@@ -46347,15 +46373,15 @@
|
|
|
46347
46373
|
}
|
|
46348
46374
|
|
|
46349
46375
|
//update connected webpeers
|
|
46350
|
-
const now = new Date().getTime()
|
|
46351
|
-
const metadata = {addrs:address,last:now}
|
|
46352
|
-
this.#connectedPeers.set(id,metadata)
|
|
46353
|
-
this.#webPeersAddrs.set(id,address)
|
|
46354
|
-
this.#connectedPeersArr.length = 0
|
|
46376
|
+
/*const now = new Date().getTime()
|
|
46377
|
+
const metadata = {addrs:address,last:now}
|
|
46378
|
+
this.#connectedPeers.set(id,metadata)
|
|
46379
|
+
this.#webPeersAddrs.set(id,address)
|
|
46380
|
+
this.#connectedPeersArr.length = 0
|
|
46355
46381
|
for(const peer of this.#connectedPeers){
|
|
46356
|
-
const item = {id:peer[0],address:peer[1].addrs}
|
|
46357
|
-
this.#connectedPeersArr.push(item)
|
|
46358
|
-
}
|
|
46382
|
+
const item = {id:peer[0],address:peer[1].addrs}
|
|
46383
|
+
this.#connectedPeersArr.push(item)
|
|
46384
|
+
}*/
|
|
46359
46385
|
|
|
46360
46386
|
}
|
|
46361
46387
|
}
|
|
@@ -46406,10 +46432,12 @@
|
|
|
46406
46432
|
if(multiaddrs.toString().includes('certhash')&& multiaddrs.toString().includes('webtransport') && multiaddrs.toString().includes('p2p-circuit')){
|
|
46407
46433
|
//console.log(addrs)
|
|
46408
46434
|
if(!this.#connections.has(id)){
|
|
46435
|
+
let mddrs = [];
|
|
46409
46436
|
for(const addr of addrs){
|
|
46410
|
-
multiaddr(addr);
|
|
46437
|
+
const mddr = multiaddr(addr);
|
|
46438
|
+
mddrs.push(mddr);
|
|
46411
46439
|
}
|
|
46412
|
-
|
|
46440
|
+
this.#dialMultiaddress(mddrs);
|
|
46413
46441
|
}
|
|
46414
46442
|
}
|
|
46415
46443
|
}
|
|
@@ -46466,10 +46494,8 @@
|
|
|
46466
46494
|
//redial if this disconnected peer is regular peer
|
|
46467
46495
|
else {
|
|
46468
46496
|
const addr = this.#connections.get(id);
|
|
46469
|
-
|
|
46470
|
-
|
|
46471
|
-
mddrs.push(addrs);
|
|
46472
|
-
this.#dialMultiaddress(mddrs);
|
|
46497
|
+
multiaddr(addr);
|
|
46498
|
+
//this.#dialMultiaddress(mddrs)
|
|
46473
46499
|
}
|
|
46474
46500
|
});
|
|
46475
46501
|
|
|
@@ -46491,6 +46517,45 @@
|
|
|
46491
46517
|
this.#ping();
|
|
46492
46518
|
});
|
|
46493
46519
|
|
|
46520
|
+
this.#libp2p.addEventListener('peer:identify', (evt) => {
|
|
46521
|
+
//console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
|
|
46522
|
+
if(evt.detail.protocols.includes(CONFIG_PROTOCOL)){
|
|
46523
|
+
//console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
|
|
46524
|
+
|
|
46525
|
+
const id = evt.detail.peerId.toString();
|
|
46526
|
+
let address = [];
|
|
46527
|
+
|
|
46528
|
+
for(const addrs of evt.detail.listenAddrs){
|
|
46529
|
+
const addr = addrs.toString()+'/p2p/'+id;
|
|
46530
|
+
if(addr.includes('webtransport')){
|
|
46531
|
+
address.push(addr);
|
|
46532
|
+
}
|
|
46533
|
+
}
|
|
46534
|
+
|
|
46535
|
+
if(!this.#webPeersId.includes(id))this.#webPeersId.push(id);
|
|
46536
|
+
|
|
46537
|
+
if(this.#connectedPeers.has(id)){
|
|
46538
|
+
//reset this last seen
|
|
46539
|
+
const now = new Date().getTime();
|
|
46540
|
+
const metadata = {addrs:address,last:now};
|
|
46541
|
+
this.#connectedPeers.set(id,metadata);
|
|
46542
|
+
}
|
|
46543
|
+
else {
|
|
46544
|
+
//add to connected webpeers
|
|
46545
|
+
this.#onConnectFn(id);
|
|
46546
|
+
const now = new Date().getTime();
|
|
46547
|
+
const metadata = {addrs:address,last:now};
|
|
46548
|
+
this.#connectedPeers.set(id,metadata);
|
|
46549
|
+
this.#connectedPeersArr.length = 0;
|
|
46550
|
+
for(const peer of this.#connectedPeers){
|
|
46551
|
+
const item = {id:peer[0],address:peer[1].addrs};
|
|
46552
|
+
this.#connectedPeersArr.push(item);
|
|
46553
|
+
}
|
|
46554
|
+
}
|
|
46555
|
+
|
|
46556
|
+
}
|
|
46557
|
+
});
|
|
46558
|
+
|
|
46494
46559
|
//dial known peers from configuration
|
|
46495
46560
|
this.#dialKnownPeers();
|
|
46496
46561
|
|
|
@@ -46506,6 +46571,8 @@
|
|
|
46506
46571
|
//dial random discovered peers
|
|
46507
46572
|
//this.#dialdiscoveredpeers()
|
|
46508
46573
|
|
|
46574
|
+
this.#registerProtocol();
|
|
46575
|
+
|
|
46509
46576
|
|
|
46510
46577
|
onMetrics((data)=>{
|
|
46511
46578
|
const signal = metrics(data);
|
|
@@ -46546,6 +46613,14 @@
|
|
|
46546
46613
|
}
|
|
46547
46614
|
},60e3)*/
|
|
46548
46615
|
|
|
46616
|
+
/*setTimeout(async()=>{
|
|
46617
|
+
const key = uint8ArrayFromString(config.CONFIG_PREFIX)
|
|
46618
|
+
const value = uint8ArrayFromString(this.id)
|
|
46619
|
+
for await (const event of this.#libp2p.services.aminoDHT.put(key,value)){
|
|
46620
|
+
console.log('put',event)
|
|
46621
|
+
}
|
|
46622
|
+
},30e3)*/
|
|
46623
|
+
|
|
46549
46624
|
}
|
|
46550
46625
|
|
|
46551
46626
|
|
|
@@ -46571,10 +46646,33 @@
|
|
|
46571
46646
|
PRIVATE FUNCTION
|
|
46572
46647
|
*/
|
|
46573
46648
|
|
|
46649
|
+
async #registerProtocol(){
|
|
46650
|
+
const handler = ({ connection, stream, protocol }) => {
|
|
46651
|
+
// use stream or connection according to the needs
|
|
46652
|
+
};
|
|
46653
|
+
|
|
46654
|
+
await this.#libp2p.handle(CONFIG_PROTOCOL, handler, {
|
|
46655
|
+
maxInboundStreams: 5,
|
|
46656
|
+
maxOutboundStreams: 5
|
|
46657
|
+
});
|
|
46658
|
+
|
|
46659
|
+
await this.#libp2p.register(CONFIG_PROTOCOL, {
|
|
46660
|
+
onConnect: (peer, connection) => {
|
|
46661
|
+
// handle connect
|
|
46662
|
+
//console.log('handle connect',peer)
|
|
46663
|
+
},
|
|
46664
|
+
onDisconnect: (peer, connection) => {
|
|
46665
|
+
// handle disconnect
|
|
46666
|
+
//console.log('handle disconnect',peer)
|
|
46667
|
+
}
|
|
46668
|
+
});
|
|
46669
|
+
|
|
46670
|
+
}
|
|
46671
|
+
|
|
46574
46672
|
#findHybridPeer(){
|
|
46575
46673
|
setTimeout(async()=>{
|
|
46576
46674
|
for(const target of CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
|
|
46577
|
-
if(!this.#isConnected(target)){
|
|
46675
|
+
if(!this.#isConnected(target) && !this.#connections.has(target) && this.#isDialEnabled ){
|
|
46578
46676
|
//console.log('findPeer',target)
|
|
46579
46677
|
const peerId = peerIdFromString(target);
|
|
46580
46678
|
//const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
|
|
@@ -46601,7 +46699,7 @@
|
|
|
46601
46699
|
}
|
|
46602
46700
|
}
|
|
46603
46701
|
}
|
|
46604
|
-
},
|
|
46702
|
+
},60e3);
|
|
46605
46703
|
}
|
|
46606
46704
|
|
|
46607
46705
|
|
|
@@ -46680,7 +46778,7 @@
|
|
|
46680
46778
|
|
|
46681
46779
|
if(!this.#isDialEnabled)return
|
|
46682
46780
|
|
|
46683
|
-
const mddrsToDial =
|
|
46781
|
+
const mddrsToDial = 5;
|
|
46684
46782
|
|
|
46685
46783
|
let queue = [];
|
|
46686
46784
|
for(const item of this.#libp2p.getDialQueue()){
|
|
@@ -46698,6 +46796,8 @@
|
|
|
46698
46796
|
|
|
46699
46797
|
if(this.#isConnected(id))continue
|
|
46700
46798
|
if(queue.includes(id)){continue;}
|
|
46799
|
+
|
|
46800
|
+
//console.log('dial',id)
|
|
46701
46801
|
|
|
46702
46802
|
//dial with webtransport
|
|
46703
46803
|
this.#dialWebtransport(mddrs);
|
|
@@ -46780,7 +46880,7 @@
|
|
|
46780
46880
|
},
|
|
46781
46881
|
members : [this.id],
|
|
46782
46882
|
onMembers : () => {},
|
|
46783
|
-
onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members);},
|
|
46883
|
+
onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members);this.#ping();},
|
|
46784
46884
|
};
|
|
46785
46885
|
}
|
|
46786
46886
|
|
|
@@ -46987,7 +47087,7 @@
|
|
|
46987
47087
|
setTimeout(()=>{
|
|
46988
47088
|
this.#dialSavedKnownID();
|
|
46989
47089
|
this.#findHybridPeer();
|
|
46990
|
-
setTimeout(()=>{this.#dialUpdateSavedKnownID();},
|
|
47090
|
+
setTimeout(()=>{this.#dialUpdateSavedKnownID();},50000);
|
|
46991
47091
|
setTimeout(()=>{
|
|
46992
47092
|
const peers = this.#libp2p.getPeers().length;
|
|
46993
47093
|
if(peers == 0){
|
|
@@ -47076,7 +47176,8 @@
|
|
|
47076
47176
|
|
|
47077
47177
|
async #dialUpdateSavedKnownID(){
|
|
47078
47178
|
for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
|
|
47079
|
-
if(!this.#connections.has(target)){
|
|
47179
|
+
if(!this.#connections.has(target) && this.#isDialEnabled && this.#dbstoreData.has(target)){
|
|
47180
|
+
//console.log('#dialUpdateSavedKnownID()',target)
|
|
47080
47181
|
const api = CONFIG_DELEGATED_API;
|
|
47081
47182
|
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
|
|
47082
47183
|
const peer = await first$1(delegatedClient.getPeers(peerIdFromString(target)));
|
package/package.json
CHANGED
package/src/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const prefix = 'webpeerjs'
|
|
2
2
|
export const CONFIG_PREFIX = prefix
|
|
3
|
+
export const CONFIG_PROTOCOL = '/'+prefix+'/0.0.1'
|
|
3
4
|
export const CONFIG_BLOCKSTORE_PATH = prefix+'-blockstore'
|
|
4
5
|
export const CONFIG_DATASTORE_PATH = prefix+'-datastore'
|
|
5
6
|
export const CONFIG_DBSTORE_PATH = prefix+'-dbstore'
|
|
@@ -24,7 +25,6 @@ export const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = [
|
|
|
24
25
|
'QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
|
|
25
26
|
'QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',
|
|
26
27
|
'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
|
|
27
|
-
'12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr',
|
|
28
28
|
'12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
|
|
29
29
|
'12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
|
|
30
30
|
'12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
|
|
@@ -32,7 +32,8 @@ export const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = [
|
|
|
32
32
|
'12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj',
|
|
33
33
|
'12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk',
|
|
34
34
|
'12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL',
|
|
35
|
-
'12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H'
|
|
35
|
+
'12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H',
|
|
36
|
+
'12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
|
|
36
37
|
]
|
|
37
38
|
|
|
38
39
|
export const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
|
package/src/utils.js
CHANGED
|
@@ -142,16 +142,16 @@ export function metrics(data){
|
|
|
142
142
|
fail = errors+timeouts
|
|
143
143
|
const treshold = errors+timeouts+stats.open+stats.pending
|
|
144
144
|
|
|
145
|
-
if(treshold>
|
|
145
|
+
if(treshold>40){
|
|
146
146
|
//console.log(`Treeshold hit : ${treshold}`)
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
if(fail>
|
|
149
|
+
if(fail>40){
|
|
150
150
|
//console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
|
|
151
151
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
if ((fail-lastfailtreshold)>
|
|
154
|
+
if ((fail-lastfailtreshold)>40){
|
|
155
155
|
if(isDialEnabled){
|
|
156
156
|
isDialEnabled = false
|
|
157
157
|
const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold})
|
package/src/webpeerjs.js
CHANGED
|
@@ -132,11 +132,11 @@ class webpeerjs{
|
|
|
132
132
|
//listen to peer connect event
|
|
133
133
|
this.#libp2p.addEventListener("peer:connect",async (evt) => {
|
|
134
134
|
|
|
135
|
-
//console.log(`Connected to ${connection.toString()}`);
|
|
136
|
-
|
|
137
135
|
const connection = evt.detail;
|
|
138
136
|
const id = evt.detail.toString()
|
|
139
137
|
|
|
138
|
+
//console.log('peer:connect '+id,evt)
|
|
139
|
+
|
|
140
140
|
const connections = this.#libp2p.getConnections().map((con)=>{return {id:con.remotePeer.toString(),addr:con.remoteAddr.toString()}})
|
|
141
141
|
const connect = connections.find((con)=>con.id == id)
|
|
142
142
|
const addr = connect.addr
|
|
@@ -159,6 +159,31 @@ class webpeerjs{
|
|
|
159
159
|
},1000)
|
|
160
160
|
}
|
|
161
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
|
+
|
|
162
187
|
});
|
|
163
188
|
|
|
164
189
|
|
|
@@ -315,7 +340,7 @@ class webpeerjs{
|
|
|
315
340
|
}
|
|
316
341
|
|
|
317
342
|
//update connected webpeers
|
|
318
|
-
const now = new Date().getTime()
|
|
343
|
+
/*const now = new Date().getTime()
|
|
319
344
|
const metadata = {addrs:address,last:now}
|
|
320
345
|
this.#connectedPeers.set(id,metadata)
|
|
321
346
|
this.#webPeersAddrs.set(id,address)
|
|
@@ -323,7 +348,7 @@ class webpeerjs{
|
|
|
323
348
|
for(const peer of this.#connectedPeers){
|
|
324
349
|
const item = {id:peer[0],address:peer[1].addrs}
|
|
325
350
|
this.#connectedPeersArr.push(item)
|
|
326
|
-
}
|
|
351
|
+
}*/
|
|
327
352
|
|
|
328
353
|
}
|
|
329
354
|
}
|
|
@@ -381,7 +406,7 @@ class webpeerjs{
|
|
|
381
406
|
const mddr = multiaddr(addr)
|
|
382
407
|
mddrs.push(mddr)
|
|
383
408
|
}
|
|
384
|
-
|
|
409
|
+
this.#dialMultiaddress(mddrs)
|
|
385
410
|
}
|
|
386
411
|
}
|
|
387
412
|
}
|
|
@@ -445,7 +470,7 @@ class webpeerjs{
|
|
|
445
470
|
let mddrs = []
|
|
446
471
|
const addrs = multiaddr(addr)
|
|
447
472
|
mddrs.push(addrs)
|
|
448
|
-
this.#dialMultiaddress(mddrs)
|
|
473
|
+
//this.#dialMultiaddress(mddrs)
|
|
449
474
|
}
|
|
450
475
|
});
|
|
451
476
|
|
|
@@ -467,6 +492,45 @@ class webpeerjs{
|
|
|
467
492
|
this.#ping()
|
|
468
493
|
})
|
|
469
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
|
+
|
|
470
534
|
//dial known peers from configuration
|
|
471
535
|
this.#dialKnownPeers()
|
|
472
536
|
|
|
@@ -482,6 +546,8 @@ class webpeerjs{
|
|
|
482
546
|
//dial random discovered peers
|
|
483
547
|
//this.#dialdiscoveredpeers()
|
|
484
548
|
|
|
549
|
+
this.#registerProtocol()
|
|
550
|
+
|
|
485
551
|
|
|
486
552
|
onMetrics((data)=>{
|
|
487
553
|
const signal = metrics(data)
|
|
@@ -522,6 +588,14 @@ class webpeerjs{
|
|
|
522
588
|
}
|
|
523
589
|
},60e3)*/
|
|
524
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
|
+
|
|
525
599
|
}
|
|
526
600
|
|
|
527
601
|
|
|
@@ -547,10 +621,33 @@ class webpeerjs{
|
|
|
547
621
|
PRIVATE FUNCTION
|
|
548
622
|
*/
|
|
549
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
|
+
|
|
550
647
|
#findHybridPeer(){
|
|
551
648
|
setTimeout(async()=>{
|
|
552
649
|
for(const target of config.CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
|
|
553
|
-
if(!this.#isConnected(target)){
|
|
650
|
+
if(!this.#isConnected(target) && !this.#connections.has(target) && this.#isDialEnabled ){
|
|
554
651
|
//console.log('findPeer',target)
|
|
555
652
|
const peerId = peerIdFromString(target)
|
|
556
653
|
//const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
|
|
@@ -577,7 +674,7 @@ class webpeerjs{
|
|
|
577
674
|
}
|
|
578
675
|
}
|
|
579
676
|
}
|
|
580
|
-
},
|
|
677
|
+
},60e3)
|
|
581
678
|
}
|
|
582
679
|
|
|
583
680
|
|
|
@@ -656,7 +753,7 @@ class webpeerjs{
|
|
|
656
753
|
|
|
657
754
|
if(!this.#isDialEnabled)return
|
|
658
755
|
|
|
659
|
-
const mddrsToDial =
|
|
756
|
+
const mddrsToDial = 5
|
|
660
757
|
|
|
661
758
|
let queue = []
|
|
662
759
|
for(const item of this.#libp2p.getDialQueue()){
|
|
@@ -674,6 +771,8 @@ class webpeerjs{
|
|
|
674
771
|
|
|
675
772
|
if(this.#isConnected(id))continue
|
|
676
773
|
if(queue.includes(id)){continue;}
|
|
774
|
+
|
|
775
|
+
//console.log('dial',id)
|
|
677
776
|
|
|
678
777
|
//dial with webtransport
|
|
679
778
|
this.#dialWebtransport(mddrs)
|
|
@@ -756,7 +855,7 @@ class webpeerjs{
|
|
|
756
855
|
},
|
|
757
856
|
members : [this.id],
|
|
758
857
|
onMembers : () => {},
|
|
759
|
-
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()},
|
|
760
859
|
}
|
|
761
860
|
}
|
|
762
861
|
|
|
@@ -963,7 +1062,7 @@ class webpeerjs{
|
|
|
963
1062
|
setTimeout(()=>{
|
|
964
1063
|
this.#dialSavedKnownID()
|
|
965
1064
|
this.#findHybridPeer()
|
|
966
|
-
setTimeout(()=>{this.#dialUpdateSavedKnownID()},
|
|
1065
|
+
setTimeout(()=>{this.#dialUpdateSavedKnownID()},50000)
|
|
967
1066
|
setTimeout(()=>{
|
|
968
1067
|
const peers = this.#libp2p.getPeers().length
|
|
969
1068
|
if(peers == 0){
|
|
@@ -1056,7 +1155,8 @@ class webpeerjs{
|
|
|
1056
1155
|
|
|
1057
1156
|
async #dialUpdateSavedKnownID(){
|
|
1058
1157
|
for(const target of config.CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
|
|
1059
|
-
if(!this.#connections.has(target)){
|
|
1158
|
+
if(!this.#connections.has(target) && this.#isDialEnabled && this.#dbstoreData.has(target)){
|
|
1159
|
+
//console.log('#dialUpdateSavedKnownID()',target)
|
|
1060
1160
|
const api = config.CONFIG_DELEGATED_API
|
|
1061
1161
|
const delegatedClient = createDelegatedRoutingV1HttpApiClient(api)
|
|
1062
1162
|
const peer = await first(delegatedClient.getPeers(peerIdFromString(target)))
|