UNPKG

971 BJavaScriptView Raw
1/*
2 * pub-server serve-sockets.js
3 * web-socket server based on socket.io
4 *
5 * primary purpose (for now) is for watchers to trigger page reload
6 * does nothing if opts.no-sockets is set (and disabled on production)
7 *
8 * copyright 2015-2020, Jürgen Leschner - github.com/jldec - MIT license
9 */
10
11
12
13var debug = require('debug')('pub:sockets');
14
15module.exports = function serveSockets(server) {
16
17 if (!(this instanceof serveSockets)) return new serveSockets(server);
18
19 var opts = server.opts;
20 if (opts.production || opts['no-sockets']) return;
21
22 var io = server.io = require('socket.io')(server.http);
23 var generator = server.generator;
24
25 io.on('connection', function(socket) {
26 debug('connect %s', socket.id);
27 generator.on('loaded', emitReload);
28
29 socket.on('disconnect', function(){
30 debug('disconnect %s', socket.id);
31 generator.removeListener('loaded', emitReload);
32 });
33
34 function emitReload() { socket.emit('reload'); }
35 });
36};