import express from 'express'; import mustacheExpress from 'mustache-express'; import Io from 'socket.io'; import http from 'http'; import shortid from 'shortid'; import _ from 'underscore'; import Room from './room'; import favicon from 'serve-favicon'; import compression from 'compression'; import fs from 'fs'; const app = express(); const server = http.createServer(app); const io = Io(server); let rooms = []; app.use(compression()); app.use(favicon(__dirname + '/public/favicon.ico')); app.engine('mustache', mustacheExpress()); app.set('view engine', 'mustache'); app.set('views', __dirname + '/views'); app.use(express.static(__dirname + '/public')); function generateNewRoom(req, res, id) { const room = new Room(io, id); rooms.push(room); console.log('generating new room'); room.on('empty', function() { rooms = _.without(rooms, _.findWhere(rooms, {_id: room._id})); }); return res.redirect(`/${id}`); } app.get('/', (req, res) => { const id = shortid.generate(); generateNewRoom(req, res, id); }); app.get('/:roomId', (req, res) => { const roomId = req.params.roomId || false; let roomExists = _.findWhere(rooms, {_id: roomId}) || false; if (roomExists) { return res.render('index', {username: shortid.generate()}); } return res.redirect('/'); }); server.listen(3000, () => { console.log('darkwire is online.'); });