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)
+ }
})
}