diff --git a/index.html b/index.html index 4ba3789..fb63317 100644 --- a/index.html +++ b/index.html @@ -5429,7 +5429,7 @@ console.log('Data :', data); try { data = JSON.parse(data) - if(!data.backup){ //Serving Users + if(!data.backupMsg){ //Serving Users floSupernode.kBucket.determineClosestSupernode(data.receiverID).then(result => { if (floGlobals.serveList.includes(result[0].floID) && data.senderID == floCrypto.getFloIDfromPubkeyHex(data.pubKey) @@ -5439,7 +5439,7 @@ else var table = floGlobals.defaultStorage; var key = `${Date.now()}_${data.senderID}` - compactIDB.addData(table, { + var value = { senderID: data.senderID, receiverID: data.receiverID, pubKey: data.pubKey, @@ -5448,10 +5448,13 @@ application: data.application, type: data.type, comment: data.comment - },key,`SN_${result[0].floID}`) + } + compactIDB.addData(table, value ,key,`SN_${result[0].floID}`) + reactor.dispatchEvent("send_backup",{ key:key, value:value, snfloID: result[0].floID}) } }).catch(error => console.log(error)) - } + }else if(data.from in floGlobals.supernodes) + reactor.dispatchEvent("backup_message_event", data) } catch (error) { console.log(error.message); } @@ -6044,7 +6047,6 @@ setInterval(refreshBlockchainData, 3600000); floSupernode.initSupernode(serverPwd, myFloID) .then(result => console.log(result)) - .catch(error => console.log(error)) }) } }) @@ -6121,36 +6123,41 @@ }) } - function connectToBackupSupernode(){ + function connectToBackupSupernode(backupNodeID){ return new Promise((resolve,reject) => { - floSupernode.kBucket.getNextSupernode(myFloID).then(backupNodeID => { - reactor.dispatchEvent("initate_backup_websocket",backupNodeID) - }).catch(error => reactor.dispatchEvent) + initateBackupWebsocket(backupNodeID) + .then(result => resolve(result)) + .catch(error => { + console.log(error) + floSupernode.kBucket.getNextSupernode(backupNodeID).then(nextBackupNode => { + connectToBackupSupernode(nextBackupNode).then(result => resolve(result)) + }).catch(error => console.log(error)) + }) + }) + } + + function initateBackupWebsocket(backupNodeID){ + return new Promise((resolve,reject) => { + try{ + floGlobals.backupNode = { + floID: backupNodeID, + wsConn: new WebSocket("wss://" + floGlobals.supernodes[backupNodeID].uri + "/ws") + } + floGlobals.backupNode.wsConn.onopen = (evt) => { + floGlobals.backupNode.wsConn.onmessage = (ev) => reactor.dispatchEvent("backup_node_message",ev); + floGlobals.backupNode.wsConn.onclose = (ev) => reactor.dispatchEvent("backup_node_disconnected",ev); + resolve(`connnected to ${backupNodeID} ws`); + } + floGlobals.backupNode.wsConn.onerror = (evt) => reject(`${backupNodeID} ws not found`); + }catch(error){ + reject(error.message) + } }) }