aboutsummaryrefslogtreecommitdiff
path: root/gossip.js
diff options
context:
space:
mode:
Diffstat (limited to 'gossip.js')
-rw-r--r--gossip.js89
1 files changed, 15 insertions, 74 deletions
diff --git a/gossip.js b/gossip.js
index afe6256..25600b5 100644
--- a/gossip.js
+++ b/gossip.js
@@ -7,7 +7,7 @@ function sync (subs, keys) {
console.log(servers)
wsServers = servers
} else {
- servers = ['ws://localhost:8080/', 'ws://bogbook.com/']
+ servers = ['ws://localhost:8080/~@OXJ7Ma1eu8HOEakF+TW9yk1k09FbOqUSyMVneXWdLaM=']
localforage.setItem('pubs', servers)
console.log(servers)
wsServers = servers
@@ -17,92 +17,33 @@ function sync (subs, keys) {
wsServers.forEach(function (server, index) {
setTimeout(function () {
console.log('SYNCING WITH: ' + server + ' to fetch ' + sub)
- var ws = new WebSocket(server + sub)
+ var split = server.split('~')
+ var serverurl = split[0]
+ var serverpub = split[1]
+ var ws = new WebSocket(serverurl)
bog(sub).then(srclog => {
if (srclog) {
open(srclog[0]).then(msg => {
- console.log(msg)
- var req = {
- src: sub,
- seq: msg.seq
- }
ws.onopen = function () {
- ws.send(JSON.stringify(req))
+ var message = JSON.stringify(msg)
+ // if we have a log then send the latest log and see if we get anything back
+ box(message, serverpub, keys).then(boxed => {
+ var obj = {
+ requester: keys.publicKey,
+ box: boxed
+ }
+ ws.send(JSON.stringify(obj))
+ })
}
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 scroller = document.getElementById('scroller')
- var logFromServer = JSON.parse(message.data)
- newlog = logFromServer.log
-
- bog().then(log => {
- for (var i = newlog.length; i-- > 0; ) {
- var pubkey = nacl.util.decodeBase64(newlog[i].author.substring(1))
- var sig = nacl.util.decodeBase64(newlog[i].signature)
- var opened = JSON.parse(nacl.util.encodeUTF8(nacl.sign.open(sig, pubkey)))
- log.unshift(opened)
- opened.key = newlog[i].key
- scroller.insertBefore(render(opened, keys), scroller.childNodes[2])
-
- if (i === 0) {
- console.log('saved log')
- log.sort((a, b) => a.timestamp - b.timestamp)
- localforage.setItem(sub, newlog.concat(srclog))
- localforage.setItem('log', log.reverse())
- }
- }
- })
- }
- }
}
})
} else if (srclog === null) {
- var req = {
- src: sub,
- seq: null
- }
-
ws.onopen = function () {
- ws.send(JSON.stringify(req))
+ console.log('NO LOG IN CLIENT')
}
ws.onmessage = function (message) {
- var openedlog = []
- var scroller = document.getElementById('scroller')
- var logFromServer = JSON.parse(message.data)
- log = logFromServer.log
-
- localforage.setItem(sub, log)
-
- for (var i = log.length; i-- > 0; ) {
- console.log(log[i])
- var pubkey = nacl.util.decodeBase64(log[i].author.substring(1))
- var sig = nacl.util.decodeBase64(log[i].signature)
- var opened = JSON.parse(nacl.util.encodeUTF8(nacl.sign.open(sig, pubkey)))
- console.log(opened)
- opened.key = log[i].key
- openedlog.push(opened)
- scroller.insertBefore(render(opened, keys), scroller.childNodes[2])
- }
-
- bog().then(log => {
- var newlog = openedlog.concat(log)
- newlog.sort((a, b) => a.timestamp - b.timestamp)
- localforage.setItem('log', newlog.reverse())
- })
-
}
}
})