summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/index.js26
-rw-r--r--server/util.js3
-rw-r--r--server/ws.js40
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]
+ })
+
+ })
+}