Created
December 8, 2014 02:59
-
-
Save naeluh/8d7b198554ba80920ee4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express') | |
, multer = require('multer') | |
, app = express() | |
, http = require('http') | |
, server = http.createServer(app) | |
, io = require('socket.io').listen(server); | |
var done=false; | |
server.listen(8095); | |
app.use(express.cookieParser()); | |
app.use(express.cookieSession({ | |
secret: "stupid" | |
})); | |
app.use(express.static(__dirname + '/static')); | |
app.use(express.multipart()); | |
app.get('/', function(req, res) { | |
res.render('index.ejs', { email: req.session.email || null }); | |
}); | |
// usernames which are currently connected to the chat | |
var usernames = {}; | |
// rooms which are currently available in chat | |
var rooms = {}; | |
app.get('/:room', function (req, res, next) { | |
if (rooms[req.params.room]){ | |
console.log('Sent'); | |
res.render('room.ejs', { email: req.session.email || null }); | |
} else { | |
console.log('Redirected'); | |
//res.redirect('/'); | |
} | |
}); | |
app.use(multer({ dest: './models/', | |
rename: function (fieldname, filename) { | |
return filename+Date.now(); | |
}, | |
onFileUploadStart: function (file) { | |
console.log(file.originalname + ' is starting ...') | |
}, | |
onFileUploadComplete: function (file) { | |
console.log(file.fieldname + ' uploaded to ' + file.path) | |
done=true; | |
}, | |
onError: function(err, next) { | |
console.log(err); next(err); | |
} | |
})); | |
app.post('/api',function(req,res){ | |
//if(done===true){ | |
console.log(req.files || []); | |
//res.send(200); | |
// } | |
}); | |
io.sockets.on('connection', function (socket) { | |
// when the client emits 'adduser', this listens and executes | |
socket.on('adduser', function(username){ | |
socket.username = username; | |
usernames[username] = username; | |
}); | |
socket.on('addroom', function(room){ | |
socket.join(room); | |
socket.emit('updatechat', 'SERVER', 'you have connected to '+ room); | |
socket.rooms = room; | |
rooms[room] = room; | |
socket.broadcast.to(room).emit('updatechat', 'SERVER', socket.username+' has joined this room'); | |
socket.emit('updaterooms', rooms, room); | |
}); | |
// when the client emits 'sendchat', this listens and executes | |
socket.on('sendchat', function (data) { | |
// we tell the client to execute 'updatechat' with 2 parameters | |
io.sockets.in(socket.room).emit('updatechat', socket.username, data); | |
}); | |
socket.on('switchRoom', function(newroom){ | |
socket.leave(socket.room); | |
socket.join(newroom); | |
socket.emit('updatechat', 'SERVER', 'you have connected to '+ newroom); | |
// sent message to OLD room | |
socket.broadcast.to(socket.room).emit('updatechat', 'SERVER', socket.username+' has left this room'); | |
// update socket session room title | |
socket.room = newroom; | |
rooms[newroom] = newroom; | |
socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room'); | |
socket.emit('updaterooms', rooms, newroom); | |
}); | |
socket.on('disconnect', function(){ | |
delete usernames[socket.username]; | |
io.sockets.emit('updateusers', usernames); | |
socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected'); | |
socket.leave(socket.room); | |
}); | |
socket.on( 'draw', function( dataControls ) { | |
io.sockets.in(socket.room).emit('updateControls', socket.username, dataControls); | |
}); | |
socket.on( 'session', function( whichSession ) { | |
io.sockets.in(socket.room).emit('checkSession', whichSession); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment