Skip to content

Instantly share code, notes, and snippets.

@Lorac
Created April 1, 2016 03:41
Show Gist options
  • Save Lorac/384c2a405374a63d3f742de9396a1462 to your computer and use it in GitHub Desktop.
Save Lorac/384c2a405374a63d3f742de9396a1462 to your computer and use it in GitHub Desktop.
Simplified version of socket chat
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 8120;
server.listen(port, function () {
console.log('Chat is listening on port %d', port);
});
app.use(express.static(__dirname + '/public'));
var usernames = {};
var numUsers = 0;
io.on('connection', function (socket) {
var addedUser = false;
socket.on('new message', function (data) {
socket.broadcast.emit('new message', {
username: socket.username,
message: data.message,
timestamp: Date.now()
});
console.log(socket.username + ": " + data.message);
});
socket.on('add user', function (username) {
socket.username = username;
usernames[username] = username;
++numUsers;
addedUser = true;
socket.emit('login', {
numUsers: numUsers
});
socket.broadcast.emit('user joined', {
username: socket.username,
numUsers: numUsers
});
});
socket.on('disconnect', function () {
if (addedUser) {
delete usernames[socket.username];
--numUsers;
socket.broadcast.emit('user left', {
username: socket.username,
numUsers: numUsers
});
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment