Peers connecting between each other.
This commit is contained in:
1 parent
81105509d9
commit
9352dd8c92
2 files changed
+27
-7
No files matched your search
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user