-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathindex.js
More file actions
82 lines (65 loc) · 1.79 KB
/
index.js
File metadata and controls
82 lines (65 loc) · 1.79 KB
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
78
79
80
81
82
var choo = require('choo')
var css = require('sheetify')
var app = choo()
app.use(function (state, emitter) {
// initial state
state.hash = ''
state.live = false
state.quality = 3
state.sources = {
available: { video: [], audio: [] },
selected: { video: null, audio: null }
}
// toggle on broadcast start/stop
emitter.on('liveToggle', function (data) {
emitter.emit('updateHash', data.live ? data.hash : '')
state.live = data.live
emitter.emit('render')
})
// sets broadcast bitrate
emitter.on('qualityToggle', function () {
var quality = state.quality
state.quality = (quality === 1) ? 3 : (quality - 1)
emitter.emit('render')
})
// sets available sources for broadcasting
emitter.on('sourcesAvailable', function (data) {
state.sources.available = {
video: data.video,
audio: data.audio
}
emitter.emit('render')
})
// select broadcast sources
emitter.on('sourcesSelect', function (data) {
state.sources.selected = {
video: data.video,
audio: data.audio
}
emitter.emit('pushState', '/broadcast')
})
// update stream hash
emitter.on('updateHash', function (data) {
state.hash = data
})
// watch stream
emitter.on('watch', function (data) {
emitter.emit('updateHash', data)
if (state.hash.length === 64) {
emitter.emit('redirect', '/view')
}
})
// redirect utility
emitter.on('redirect', function (data) {
emitter.emit('pushState', data)
})
})
// import base stylesheet
css('./style.css')
// routes
app.route('/', require('./components/home'))
app.route('/broadcast', require('./components/broadcast'))
app.route('/view', require('./components/viewer'))
app.route('/settings', require('./components/settings'))
// start!
document.body.appendChild(app.start())