UNPKG

997 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, Jurgen Leschner - github.com/jldec - MIT license
9 */
10
11
12
13var debug = require('debug')('pub:sockets');
14var u = require('pub-util');
15
16module.exports = function serveSockets(server) {
17
18 if (!(this instanceof serveSockets)) return new serveSockets(server);
19
20 var opts = server.opts;
21 if (opts.production || opts['no-sockets']) return;
22
23 var io = server.io = require('socket.io')(server.http);
24 var generator = server.generator;
25
26 io.on('connection', function(socket) {
27 debug('connect %s', socket.id);
28 generator.on('loaded', emitReload);
29
30 socket.on('disconnect', function(){
31 debug('disconnect %s', socket.id);
32 generator.removeListener('loaded', emitReload);
33 });
34
35 function emitReload() { socket.emit('reload'); }
36 });
37}