Peers detecting disconnections and auto reconnecting to each other

This commit is contained in:
Luis Fernando Molina committed 2021-11-06 10:23:24 +01:00
1 parent 9352dd8c92
commit 02723165b4
2 files changed
+32 -6

No files matched your search

@@ -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)