Peers connecting between each other.

This commit is contained in:
Luis Fernando Molina committed 2021-11-06 09:52:15 +01:00
1 parent 81105509d9
commit 9352dd8c92
2 files changed
+27 -7

No files matched your search

+25 -7
View File
@@ -10,24 +10,34 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
finalize: finalize
}
const RECONNECT_DELAY = 10 * 1000
let intervalIdConnectToPeers
return thisObject
function finalize() {
thisObject.peers = undefined
clearInterval(intervalIdConnectToPeers)
}
async function initialize() {
/*
On a first iteration, we will try to connect to 2 Network Peers, one upstream and one downstream,
meaning one with higher ranking that us, and the other with lower ranking than us.
*/
thisObject.peers = []
let totalConnected = 0
connectToPeers()
intervalIdConnectToPeers = setInterval(connectToPeers, RECONNECT_DELAY);
}
async function connectToPeers() {
if (thisObject.peers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { return }
for (let i = 0; i < NT.networkNode.p2pNetwork.p2pNodesToConnect.length; i++) {
if (totalConnected === 2) { break }
if (thisObject.peers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { break }
let peer = {}
peer.p2pNetworkNode = NT.networkNode.p2pNetwork.p2pNodesToConnect[i]
if (isAlreadyAConnectedPeer(peer) === true) { continue }
peer.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient()
await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode)
.then(addPeer)
@@ -35,7 +45,6 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
function addPeer() {
thisObject.peers.push(peer)
totalConnected++
}
function onError(err) {
@@ -46,5 +55,14 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
}
}
}
function isAlreadyAConnectedPeer(peer) {
for (let i = 0; i < thisObject.peers.length; i++) {
let connectedPeer = thisObject.peers[i]
if (connectedPeer.p2pNetworkNode.node.id === peer.p2pNetworkNode.node.id) {
return true
}
}
}
}
}