This repository has been archived by the owner on Jul 21, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
77 lines (67 loc) · 2 KB
/
index.js
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var JSONStream = require('JSONStream')
var path = require('path')
var Hyperserv = require('hyperserv')
var minimist = require('minimist')
var makeKV = require('./lib/kv')
var websocket = require('websocket-stream')
var RPC = require('multiplex-rpc')
var fs = require('fs')
var pump = require('pump')
var argv = minimist(process.argv.slice(2), {
alias: { p: 'port' },
default: { port: 8000 }
})
var hyperstream = require('hyperstream')
var bankai = require('bankai')
var staticClient = require('./client/app')
// var makeRoute = Hyperserv.makeRoute
var assets = bankai(require.resolve('./client'), {
html: { favicon: false },
js: { debug: true },
css: false
})
var html = assets.html
var js = assets.js
// var spy = require('through2-spy')
// var streamSpy = spy.ctor({wantStrings: true}, chunk => console.log(chunk))
var kv = makeKV(path.join(__dirname, 'logs'))
var app = new Hyperserv()
// var wss
websocket.createServer({server: app.httpServer}, handle)
// Set up routes
app.router.set('/', function (req, res, opts, cb) {
res.setHeader('Content-Type', 'text/html; charset=utf-8')
const state = { message: { server: 'hello server!' } }
const inner = staticClient.toString(req.url, state)
const hs = hyperstream({ 'body': { _appendHtml: inner } })
pump(html(req, res), hs, res, cb)
})
app.router.set('/bundle.js', function (req, res, opts, cb) {
pump(js(req, res), res, cb)
})
app.router.set('/all', function (req, res, opts, cb) {
kv.createReadStream().pipe(JSONStream.stringify()).pipe(res)
})
app.httpServer.listen(argv.port)
function handle (stream) {
var rpc = RPC({
foo: function (bar, cb) {
var data = { foo: bar }
return cb(null, data)
},
hello: function () {
return fs.createReadStream(path.join(__dirname, '/hello.txt'))
}
})
pump(stream, rpc, stream, function (err) {
if (err) {
switch (err.message) {
case 'premature close':
console.log('premature close')
break
default:
console.log(err)
}
}
})
}