mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-02-14 17:49:59 +00:00
42 lines
1.1 KiB
JavaScript
Executable File
42 lines
1.1 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
/* This is a very simple pub/sub server, allowing to
|
|
* remote control browsers displaying the slides.
|
|
* The browsers connect to this pub/sub server using
|
|
* Socket.IO, and the server tells them which slides
|
|
* to display.
|
|
*
|
|
* The server can be controlled with a little CLI,
|
|
* or by one of the browsers.
|
|
*/
|
|
|
|
var express = require('express');
|
|
var app = express();
|
|
var http = require('http').Server(app);
|
|
var io = require('socket.io')(http);
|
|
|
|
app.get('/', function(req, res){
|
|
res.send('container.training autopilot pub/sub server');
|
|
});
|
|
|
|
/* Serve remote.js from the current directory */
|
|
app.use(express.static('.'));
|
|
|
|
/* Serve slides etc. from current and the parent directory */
|
|
app.use(express.static('..'));
|
|
|
|
io.on('connection', function(socket){
|
|
console.log('a client connected: ' + socket.handshake.address);
|
|
socket.on('slide change', function(n, ack){
|
|
console.log('slide change: ' + n);
|
|
socket.broadcast.emit('slide change', n);
|
|
if (typeof ack === 'function') {
|
|
ack();
|
|
}
|
|
});
|
|
});
|
|
|
|
http.listen(3000, function(){
|
|
console.log('listening on *:3000');
|
|
});
|