//NOTE: SERVER CONFIGURATION has 2 options. ENABLE 1 of 2 options //NOTE: option (1) - https server (443) + redirection 80 to 443 //prepare credentials & etc var fs = require('fs'); var https = require('https'); var privateKey = fs.readFileSync('/etc/letsencrypt/live/choir.run/privkey.pem', 'utf8'); var certificate = fs.readFileSync('/etc/letsencrypt/live/choir.run/fullchain.pem', 'utf8'); var credentials = { key: privateKey, cert: certificate }; //https WWW server @ port 443 var express = require('express'); var app = express(); var httpsWebServer = https.createServer(credentials, app).listen(443, function() { console.log('[express] listening on *:443'); }); //http Redirection server @ port 80 // ==> Don't get why this works.. all others not. ==> https://stackoverflow.com/a/23283173 var http = require('http'); var httpApp = express(); var httpRouter = express.Router(); httpApp.use('*', httpRouter); httpRouter.get('*', function(req, res) { var host = req.get('Host'); // replace the port in the host host = host.replace(/:\d+$/, ":" + app.get('port')); // determine the redirect destination var destination = ['https://', host, req.url].join(''); return res.redirect(destination); }); var httpServer = http.createServer(httpApp); httpServer.listen(80); //https socket.io server @ port 443 (same port as WWW service) var io = require('socket.io')(httpsWebServer, { 'pingInterval': 1000, 'pingTimeout': 3000 }); // //NOTE: option (2) - simple http dev server (8080) // var http = require('http'); // var express = require('express'); // var app = express(); // var httpServer = http.createServer(app); // httpServer.listen(8080); // //http socket.io server @ port 8080 (same port as WWW service) // var io = require('socket.io')(httpServer, { // 'pingInterval': 1000, // 'pingTimeout': 3000 // }); //express configuration app.use(express.static('public')); //socket.io events io.on('connection', function(socket) { //entry log. console.log('someone connected.'); //on 'sound' --> relay the message to everybody INCLUDING sender // var soundactive = false; socket.on('sound', function(sound) { //relay the message to everybody EXCEPT the sender socket.broadcast.emit('sound', sound); //DEBUG console.log('sound.name :' + sound.name); console.log('sound.action :' + sound.action); console.log('sound.group :' + sound.group); }); //on 'clap' --> relay the message to everybody INCLUDING sender socket.on('clap', function(clap) { //relay the message to everybody INCLUDING sender io.emit('clap', clap); //DEBUG console.log('clap.name :' + clap.name); }); //on 'disconnect' socket.on('disconnect', function() { console.log('someone disconnected.'); }); });