Network Nodes connecting to other Network Nodes
This commit is contained in:
1 parent
48c35d8148
commit
b5eb7dd425
5 files changed
+58
-11
No files matched your search
@@ -32,7 +32,7 @@ exports.newDesktopApp = function newDesktopApp() {
|
||||
*/
|
||||
thisObject.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient()
|
||||
await thisObject.webSocketsClient.initialize('Network Client', selectedNetworkNode)
|
||||
console.log('Desktop Client Connected to Network Node via Web Sockets ................... Connected to port ' + global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT)
|
||||
|
||||
/*
|
||||
These are the Network Interfaces by which the Web App interacts with this Desktop Client.
|
||||
*/
|
||||
|
||||
+10
-4
@@ -5,6 +5,7 @@ exports.newNetworkNode = function newNetworkNode() {
|
||||
socialGraphService: undefined,
|
||||
storage: undefined,
|
||||
p2pNetwork: undefined,
|
||||
p2pNetworkPeers: undefined,
|
||||
run: run
|
||||
}
|
||||
|
||||
@@ -24,16 +25,21 @@ exports.newNetworkNode = function newNetworkNode() {
|
||||
thisObject.storage = NT.projects.socialTrading.modules.storage.newSocialTradingModulesStorage()
|
||||
thisObject.storage.initialize()
|
||||
/*
|
||||
We can join now the P2P Network as a new peer there.
|
||||
Let's discover who is at the p2p network.
|
||||
*/
|
||||
thisObject.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork()
|
||||
await thisObject.p2pNetwork.initialize('Network Peer')
|
||||
/*
|
||||
We can join now the P2P Network as a new peer there.
|
||||
*/
|
||||
thisObject.p2pNetworkPeers = SA.projects.network.modules.p2pNetworkPeers.newNetworkModulesP2PNetworkPeers()
|
||||
await thisObject.p2pNetworkPeers.initialize()
|
||||
/*
|
||||
Other Network Nodes and Client Apps will communicate with this Network Node via it's Websocket Interface.
|
||||
*/
|
||||
thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface()
|
||||
thisObject.webSocketsInterface.initialize()
|
||||
console.log('Network Node Web Sockets Interface ....................................... Listening at port ' + JSON.parse(NT.networkNode.p2pNetwork.thisNetworkNode.node.config).webSocketsPort)
|
||||
thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface()
|
||||
thisObject.webSocketsInterface.initialize()
|
||||
console.log('Network Node Web Sockets Interface ....................................... Listening at port ' + JSON.parse(NT.networkNode.p2pNetwork.thisNetworkNode.node.config).webSocketsPort)
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,8 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
|
||||
/*
|
||||
This module represents the P2P Nodes we are connected to.
|
||||
*/
|
||||
let thisObject = {
|
||||
let thisObject = {
|
||||
peers: undefined,
|
||||
|
||||
/* Framework Functions */
|
||||
initialize: initialize,
|
||||
@@ -12,7 +13,7 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
|
||||
return thisObject
|
||||
|
||||
function finalize() {
|
||||
|
||||
thisObject.peers = undefined
|
||||
}
|
||||
|
||||
async function initialize() {
|
||||
@@ -20,7 +21,30 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
|
||||
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
|
||||
|
||||
|
||||
for (let i = 0; i < NT.networkNode.p2pNetwork.p2pNodesToConnect.length; i++) {
|
||||
if (totalConnected === 2) { break }
|
||||
let peer = {}
|
||||
peer.p2pNetworkNode = NT.networkNode.p2pNetwork.p2pNodesToConnect[i]
|
||||
peer.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient()
|
||||
await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode)
|
||||
.then(addPeer)
|
||||
.catch(onError)
|
||||
|
||||
function addPeer() {
|
||||
thisObject.peers.push(peer)
|
||||
totalConnected++
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
if (err !== undefined) {
|
||||
console.log('[ERROR] P2P Network Peers -> onError -> While connecting to node -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name + ' -> ' + err.message)
|
||||
} else {
|
||||
console.log('[WARN] P2P Network Peers -> onError -> Peer Not Available at the Moment -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWebSocketsNetworkClient() {
|
||||
|
||||
let thisObject = {
|
||||
host: undefined,
|
||||
port: undefined,
|
||||
sendMessage: sendMessage,
|
||||
initialize: initialize,
|
||||
finalize: finalize
|
||||
@@ -29,11 +31,13 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb
|
||||
|
||||
web3 = new SA.nodeModules.web3()
|
||||
|
||||
let host = JSON.parse(p2pNetworkNode.node.config).host
|
||||
let port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort
|
||||
thisObject.host = JSON.parse(p2pNetworkNode.node.config).host
|
||||
thisObject.port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort
|
||||
|
||||
socketClient = new SA.nodeModules.ws('ws://' + host + ':' + port)
|
||||
socketClient = new SA.nodeModules.ws('ws://' + thisObject.host + ':' + thisObject.port)
|
||||
await setUpWebsocketClient(callerRole, p2pNetworkNode)
|
||||
|
||||
console.log('Websockets Client Connected to Network Node via Web Sockets .............. Connected to ' + p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + p2pNetworkNode.node.name + ' -> ' + thisObject.host + ':' + thisObject.port)
|
||||
}
|
||||
|
||||
async function setUpWebsocketClient(callerRole, p2pNetworkNode) {
|
||||
@@ -197,8 +201,15 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
if (err.message.indexOf('ECONNREFUSED') >= 0) {
|
||||
console.log('[WARN] Web Sockets Client -> onError -> Nobody home at ' + thisObject.host + ':' + thisObject.port)
|
||||
reject()
|
||||
return
|
||||
}
|
||||
console.log('[ERROR] Web Sockets Client -> onError -> err.message = ' + err.message)
|
||||
console.log('[ERROR] Web Sockets Client -> onError -> err.stack = ' + err.stack)
|
||||
reject()
|
||||
return
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
|
||||
@@ -1413,6 +1413,12 @@
|
||||
"propertyName": "p2pNetworkNode",
|
||||
"functionName": "newNetworkModulesP2PNetworkNode",
|
||||
"fileName": "P2PNetworkNode.js"
|
||||
},
|
||||
{
|
||||
"name": "P2P Network Peers",
|
||||
"propertyName": "p2pNetworkPeers",
|
||||
"functionName": "newNetworkModulesP2PNetworkPeers",
|
||||
"fileName": "P2PNetworkPeers.js"
|
||||
}
|
||||
],
|
||||
"utilities": [
|
||||
|
||||
Reference in new issue
Block a user