Skip to content

Instantly share code, notes, and snippets.

@IPRIT
Created April 19, 2015 19:55
Show Gist options
  • Select an option

  • Save IPRIT/cdc94e9a847ba43a54c5 to your computer and use it in GitHub Desktop.

Select an option

Save IPRIT/cdc94e9a847ba43a54c5 to your computer and use it in GitHub Desktop.
var express = require('express');
var app = express();
var http = require('http').Server(app);
var socket_io = require('socket.io');
var io = socket_io(http);
var users = require('./users');
var logger = require('./logger');
app.use('/static', express.static(__dirname + '/public'));
app.get('/', function(req, res) {
logger.log('[New HTTP connection]');
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket) {
logger.log('[New socket created]', socket.id);
var user;
socket.on('user joined', function(userInfo) {
user = users.addUser(userInfo, socket).userInfo;
logger.log('[User joined]', user.name);
});
socket.on('chat message', function(msg) {
if (!user) {
socket.emit('user not joined');
return;
}
logger.log('[New message]', '[from: ' + user.name + ' ]', msg.message);
socket.broadcast.emit('new message', {
timestamp: msg.timestamp,
message: msg.message,
socket_id: socket.id,
user: user
});
});
socket.on('user name changed', function (new_name) {
if (!new_name.length) {
return;
}
var old_name = user.name;
user = users.changeName(socket.id, new_name).userInfo;
logger.log('[User name has been changed]', old_name, new_name);
});
socket.on('disconnect', function() {
var disconnectedUser = users.removeUserBySocket(socket.id);
if (!disconnectedUser) {
return;
}
logger.log('[User has been left]', disconnectedUser.userInfo.name || user.socket.id);
});
});
http.listen(3000, function() {
console.log("Server listening 3000 port");
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment