diff options
Diffstat (limited to 'gossip.js')
-rw-r--r-- | gossip.js | 108 |
1 files changed, 62 insertions, 46 deletions
@@ -1,55 +1,71 @@ -function sync (src, keys) { - var server = 'ws://localhost:8080/' +function sync (subs, keys) { - var ws = new WebSocket(server + src) + var wsServers - console.log('SYNCING') + localforage.getItem('servers').then(function (servers) { + if (servers) { + console.log(servers) + wsServers = servers + } else { + servers = ['ws://localhost:8080/', 'ws://evbogue.com/'] + localforage.setItem('servers', servers) + console.log(servers) + wsServers = servers + } + }).then(function () { + subs.forEach(function (sub) { + wsServers.forEach(function (server) { + console.log('SYNCING WITH: ' + server + ' to fetch ' + sub) + var ws = new WebSocket(server + sub) - bog(src).then(srclog => { - if (srclog) { - open(srclog[0]).then(msg => { - var req = { - src, - seq: msg.seq, - requester: keys.publicKey - } - ws.onopen = function () { - ws.send(JSON.stringify(req)) - } - ws.onmessage = function (message) { - var serverMsg = JSON.parse(message.data) - if (msg.seq === serverMsg.seq) { - } else if (msg.seq > serverMsg.seq) { - var diff = msg.seq - serverMsg.seq - var sendlog = srclog.slice(0, diff) - var send = { - src, - log: sendlog, + bog(sub).then(srclog => { + if (srclog) { + open(srclog[0]).then(msg => { + var req = { + src: sub, + seq: msg.seq, + requester: keys.publicKey + } + ws.onopen = function () { + ws.send(JSON.stringify(req)) + } + ws.onmessage = function (message) { + var serverMsg = JSON.parse(message.data) + if (msg.seq === serverMsg.seq) { + } else if (msg.seq > serverMsg.seq) { + var diff = msg.seq - serverMsg.seq + var sendlog = srclog.slice(0, diff) + var send = { + src: sub, + log: sendlog, + requester: keys.publicKey + } + ws.send(JSON.stringify(send)) + } else { + if (serverMsg.log) { + var newlog = serverMsg.log.concat(srclog) + localforage.setItem(sub, newlog).then(function () {regenerate()}) + } + } + } + }) + } else { + var req = { + src: sub, + seq: null, requester: keys.publicKey } - ws.send(JSON.stringify(send)) - } else { - if (serverMsg.log) { - var newlog = serverMsg.log.concat(srclog) - localforage.setItem(src, newlog).then(function () {regenerate()}) - } + + ws.onopen = function () { + ws.send(JSON.stringify(req)) + } + ws.onmessage = function (message) { + var serverMsg = JSON.parse(message.data) + localforage.setItem(sub, serverMsg.log).then(function () {regenerate()}) + } } - } + }) }) - } else { - var req = { - src, - seq: null, - requester: keys.publicKey - } - - ws.onopen = function () { - ws.send(JSON.stringify(req)) - } - ws.onmessage = function (message) { - var serverMsg = JSON.parse(message.data) - localforage.setItem(src, serverMsg.log).then(function () {regenerate()}) - } - } + }) }) } |