Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Made by djazz
- // This is a chat server for node.js
- // See demo at http://djazz.mine.nu:8004/
- var http = require('http');
- var fs = require('fs');
- var loadFile = function (filename, mime, res) {
- fs.readFile(filename, function (err, data) {
- if(err) throw err;
- res.writeHead(200, {'Content-Type': mime});
- res.end(data);
- });
- };
- var server = http.createServer(function (request, response) {
- switch(request.url) {
- case '/':
- loadFile(__dirname+'/index.html', 'text/html', response);
- break;
- case '/script.js':
- loadFile(__dirname+'/script.js', 'application/javascript', response);
- break;
- case '/style.css':
- loadFile(__dirname+'/style.css', 'text/css', response);
- break;
- default:
- response.writeHead(404, {'Content-Type': 'text/plain'});
- response.end('Not found');
- break;
- }
- });
- server.listen(8004, function () {
- console.log(timestamp(), 'Chatroom server started');
- });
- var io = require('socket.io').listen(server);
- io.set('log level', 1);
- var uid = 0;
- var users = {};
- var usernameExists = function (username) {
- for(var i in users) {
- if(users.hasOwnProperty(i) && users[i].name === username) return true;
- }
- return false;
- };
- var timestamp = function () {
- var now = new Date();
- var h = now.getHours();
- var m = now.getMinutes();
- var s = now.getSeconds();
- return (h>9?h:'0'+h)+"."+(m>9?m:'0'+m)+"."+(s>9?s:'0'+s);
- };
- io.sockets.on('connection', function (socket) {
- socket.uid = uid++;
- socket.on('message', function (message) {
- if(socket.uid > -1) {
- message = message.replace(/\</g, '<').replace(/\>/g, '>');
- io.sockets.emit('message', {'message': message, 'index': socket.uid});
- console.log(timestamp(), users[socket.uid].name+':', message);
- }
- });
- socket.on('join', function (username) {
- username = username.trim().substring(0, 32);
- if(usernameExists(username)) {
- var i=2;
- while(usernameExists(username+i)) {
- i+=1;
- }
- username += i;
- }
- username = username.replace(/\</g, '<').replace(/\>/g, '>');
- users[socket.uid] = {name: username};
- socket.broadcast.emit('join', {'index': socket.uid, name: username});
- socket.emit('userlist', users);
- console.log(timestamp(), username+" joined");
- });
- socket.on('disconnect', function () {
- if(users[socket.uid] !== undefined) {
- console.log(timestamp(), (users[socket.uid].name)+" left");
- socket.broadcast.emit('left', socket.uid);
- delete users[socket.uid];
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement