diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/index.js | 26 | ||||
| -rw-r--r-- | server/util.js | 3 | ||||
| -rw-r--r-- | server/ws.js | 40 |
3 files changed, 62 insertions, 7 deletions
diff --git a/server/index.js b/server/index.js index 64965b5..1843ae0 100644 --- a/server/index.js +++ b/server/index.js @@ -9,7 +9,9 @@ var http = require('http'), express = require('express'), bodyParser = require('body-parser'), multer = require('multer'), - path = require('path'); + path = require('path'), + ws = require("./ws"), + util = require("./util"); var websocket = require('./websocket') @@ -17,8 +19,8 @@ var app = express() var server, io app.set('port', config.port) -app.set('views', path.join(__dirname, '../views')) app.set('view engine', 'ejs') +app.set('views', path.join(__dirname, '../views')) app.use(express.static(path.join(__dirname, '../public'))) app.use(require('morgan')("combined", {})) app.use(require("express-json")()) @@ -45,12 +47,22 @@ app.all('*', function(req, res, next){ next() }) app.get("/", function(req,res){ - res.render("pages/index", {}) + res.render("pages/lobby", {}) +}) +app.post("/v/:room", function(req,res){ + var room = util.sanitizeName(req.params.room) + ws.add(room) + res.render("pages/room") }) app.get("/v/:room", function(req,res){ - var room = req.params.room - if (! (room in rooms)) { - rooms[room] = websocket.bind(room) - } + var room = util.sanitizeName(req.params.room) + ws.add(room) res.render("pages/room") }) + +server = http.createServer(app) +server.listen(app.get('port'), function () { + console.log('asdf-yt server listening on port ' + app.get('port')); +}) + +ws.listen(server) diff --git a/server/util.js b/server/util.js new file mode 100644 index 0000000..11c0cac --- /dev/null +++ b/server/util.js @@ -0,0 +1,3 @@ +var util = module.exports = {} + +util.sanitizeName = function (s){ return (s || "").replace(new RegExp("[^-_a-zA-Z0-9]", 'g'), "") } diff --git a/server/ws.js b/server/ws.js new file mode 100644 index 0000000..860319a --- /dev/null +++ b/server/ws.js @@ -0,0 +1,40 @@ + +var server = require('socket.io') + +var ws = module.exports = {} + +var rooms = {} + +ws.listen = function(app){ + ws.io = server(app) +} +ws.add = function(name){ + if (name in rooms) { return } + var room = {} + room.users = {} + + var ns = base.io.of('/' + name) + + ns.on('connection', function(socket){ + + var username + + socket.on('join', function(data){ + username = data.username + if (room.users[username]) { + // already connected? + room.users[username].disconnect() + room.users[username] = socket + } + }) + + socket.on('message', function(data){ + ns.emit('message', data) + }) + + socket.on('disconnect', function(){ + delete room.users[username] + }) + + }) +} |
