Packages
fermo
0.14.0
0.20.1
0.20.0
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.7
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.4
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A static site generator
Current section
Files
Jump to
Current section
Files
priv/static/fermo-live.js
const FERMO_LIVE_SOCKET = ((location) => {
const socketPath = `ws://${location.host}/__fermo/ws/live-reload`
const socket = new window.WebSocket(socketPath)
let pingTimer = null
const reloadPage = () => {
window.location.reload()
}
socket.onopen = e => {
console.log('socket onopen')
socket.send('subscribe:live-reload:' + window.location.pathname)
pingTimer = window.setInterval(() => {
socket.send(JSON.stringify({event: 'ping'}))
}, 10000)
}
socket.onmessage = (event) => {
console.log('onmessage: ', event)
if (event.data === 'reload') {
reloadPage()
}
}
socket.onclose = event => {
// Clean up ping timer
if(pingTimer) {
window.clearInterval(pingTimer)
pingTimer = null
}
if (event.wasClean) {
console.log('onclose clean event:', event)
} else {
// TODO: Poll to try to reconnect
console.log('onclose died event:', event)
}
}
socket.onerror = error => {
console.log('onerror error:', error)
}
return socket
})(window.location)