Peers detecting disconnections and auto reconnecting to each other
This commit is contained in:
1 parent
9352dd8c92
commit
02723165b4
2 files changed
+32
-6
No files matched your search
@@ -39,7 +39,7 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
|
||||
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)
|
||||
await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode, onConnectionClosed)
|
||||
.then(addPeer)
|
||||
.catch(onError)
|
||||
|
||||
@@ -54,6 +54,16 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP
|
||||
console.log('[WARN] P2P Network Peers -> onError -> Peer Not Available at the Moment -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name)
|
||||
}
|
||||
}
|
||||
|
||||
function onConnectionClosed(webSocketsClientId) {
|
||||
for (let i = 0; i < thisObject.peers.length; i++) {
|
||||
let connectedPeer = thisObject.peers[i]
|
||||
if (connectedPeer.webSocketsClient.id === webSocketsClientId) {
|
||||
thisObject.peers.splice(i, 1)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isAlreadyAConnectedPeer(peer) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWebSocketsNetworkClient() {
|
||||
|
||||
let thisObject = {
|
||||
id: undefined,
|
||||
isConnected: undefined,
|
||||
host: undefined,
|
||||
port: undefined,
|
||||
sendMessage: sendMessage,
|
||||
@@ -27,20 +29,23 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb
|
||||
onMessageFunctionsMap = undefined
|
||||
}
|
||||
|
||||
async function initialize(callerRole, p2pNetworkNode) {
|
||||
async function initialize(callerRole, p2pNetworkNode, onConnectionClosedCallBack) {
|
||||
|
||||
web3 = new SA.nodeModules.web3()
|
||||
|
||||
thisObject.id = SA.projects.foundations.utilities.miscellaneousFunctions.genereteUniqueId()
|
||||
|
||||
thisObject.host = JSON.parse(p2pNetworkNode.node.config).host
|
||||
thisObject.port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort
|
||||
|
||||
socketClient = new SA.nodeModules.ws('ws://' + thisObject.host + ':' + thisObject.port)
|
||||
await setUpWebsocketClient(callerRole, p2pNetworkNode)
|
||||
await setUpWebsocketClient(callerRole, p2pNetworkNode, onConnectionClosedCallBack)
|
||||
|
||||
console.log('Websockets Client Connected to Network Node via Web Sockets .............. Connected to ' + p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + p2pNetworkNode.node.name + ' -> ' + thisObject.host + ':' + thisObject.port)
|
||||
thisObject.isConnected = true
|
||||
}
|
||||
|
||||
async function setUpWebsocketClient(callerRole, p2pNetworkNode) {
|
||||
async function setUpWebsocketClient(callerRole, p2pNetworkNode, onConnectionClosedCallBack) {
|
||||
|
||||
return new Promise(connectToNewtwork)
|
||||
|
||||
@@ -48,10 +53,11 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb
|
||||
|
||||
try {
|
||||
|
||||
socketClient.onopen = () => { onConnection() }
|
||||
socketClient.onopen = () => { onConnectionOpened() }
|
||||
socketClient.onclose = () => { onConnectionClosed() }
|
||||
socketClient.onerror = err => { onError(err) }
|
||||
|
||||
function onConnection() {
|
||||
function onConnectionOpened() {
|
||||
|
||||
handshakeProcedure()
|
||||
|
||||
@@ -200,6 +206,16 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb
|
||||
}
|
||||
}
|
||||
|
||||
function onConnectionClosed() {
|
||||
if (thisObject.isConnected === true) {
|
||||
console.log('Websockets Client Connected to Network Node via Web Sockets .............. Disconnected from ' + p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + p2pNetworkNode.node.name + ' -> ' + thisObject.host + ':' + thisObject.port)
|
||||
}
|
||||
if (onConnectionClosedCallBack !== undefined) {
|
||||
onConnectionClosedCallBack(thisObject.id)
|
||||
}
|
||||
thisObject.isConnected = false
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
if (err.message.indexOf('ECONNREFUSED') >= 0) {
|
||||
console.log('[WARN] Web Sockets Client -> onError -> Nobody home at ' + thisObject.host + ':' + thisObject.port)
|
||||
|
||||
Reference in new issue
Block a user