aboutsummaryrefslogtreecommitdiff
path: root/server.js
blob: a6583b7b7c1da5c76dbc27dc7e703324f69ed337 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// static server (8089)

var http = require('http')
var serve = require('ecstatic')
var opn = require('opn')

http.createServer(
  serve({ root: __dirname})
).listen(8089)

opn('http://localhost:8089')

// websocket server (8080)

var WebSocket = require('ws')
var fs = require('fs')
var nacl = require('tweetnacl')
    nacl.util = require('tweetnacl-util')

var wserver = new WebSocket.Server({ port: 8080 })

wserver.on('connection', function (ws) {
  ws.on('message', function (message) {
    var data = JSON.parse(message)
    console.log(data)

    // initial req/res contains a sequence number
    if (data.seq) {
      if (fs.existsSync(__dirname + '/bogs/' + data.feed)) {
        fs.readFile(__dirname + '/bogs/' + data.feed, 'UTF-8', function (err, data) {
          if (data) {
            var log = JSON.parse(data)
            console.log(log)
          }
        })
      } else {
        var res = {
          feed: data.feed,
          seq: null
        }
        console.log(res)
        ws.send(JSON.stringify(res))
      }

    }

    // if the client has a longer log, it'll send one for the server to save
    if (data.log) {
      console.log(data)
      if (fs.existsSync(__dirname + '/bogs/' + data.feed)) {
        var log = JSON.parse(fs.readFileSync(__dirname + '/bogs/' + data.feed))
        console.log(log)

      } else {
        fs.writeFile(__dirname + '/bogs/' + data.feed, JSON.stringify(data.log), function (err, success) {
          console.log('saved ' + data.feed + ' sent by ' + data.requester)
        })
      }
    }

  })
})