rc-web@42: var express = require('express'); rc-web@42: var fs = require('fs'); rc-web@42: var io = require('socket.io'); rc-web@42: var _ = require('underscore'); rc-web@42: var Mustache = require('mustache'); rc-web@42: rc-web@42: var app = express.createServer(); rc-web@42: var staticDir = express.static; rc-web@42: rc-web@42: io = io.listen(app); rc-web@42: rc-web@42: var opts = { rc-web@42: port : 1947, rc-web@42: baseDir : __dirname + '/../../' rc-web@42: }; rc-web@42: rc-web@42: io.sockets.on('connection', function(socket) { rc-web@42: socket.on('slidechanged', function(slideData) { rc-web@42: socket.broadcast.emit('slidedata', slideData); rc-web@42: }); rc-web@42: }); rc-web@42: rc-web@42: app.configure(function() { rc-web@42: [ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) { rc-web@42: app.use('/' + dir, staticDir(opts.baseDir + dir)); rc-web@42: }); rc-web@42: }); rc-web@42: rc-web@42: app.get("/", function(req, res) { rc-web@42: fs.createReadStream(opts.baseDir + '/index.html').pipe(res); rc-web@42: }); rc-web@42: rc-web@42: app.get("/notes/:socketId", function(req, res) { rc-web@42: rc-web@42: fs.readFile(opts.baseDir + 'plugin/speakernotes/notes.html', function(err, data) { rc-web@42: res.send(Mustache.to_html(data.toString(), { rc-web@42: socketId : req.params.socketId rc-web@42: })); rc-web@42: }); rc-web@42: // fs.createReadStream(opts.baseDir + 'speakernotes/notes.html').pipe(res); rc-web@42: }); rc-web@42: rc-web@42: // Actually listen rc-web@42: app.listen(opts.port || null); rc-web@42: rc-web@42: var brown = '\033[33m', rc-web@42: green = '\033[32m', rc-web@42: reset = '\033[0m'; rc-web@42: rc-web@42: var slidesLocation = "http://localhost" + ( opts.port ? ( ':' + opts.port ) : '' ); rc-web@42: rc-web@42: console.log( brown + "reveal.js - Speaker Notes" + reset ); rc-web@42: console.log( "1. Open the slides at " + green + slidesLocation + reset ); rc-web@42: console.log( "2. Click on the link your JS console to go to the notes page" ); rc-web@42: console.log( "3. Advance through your slides and your notes will advance automatically" );