1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| var express = require('express'); var path = require("path"); var app = express(); var server = require("http").createServer(app); var io = require("socket.io").listen(server);
io.set("log level", 1); io.on('connection',function(socket){ socket.emit("open"); var client = { socket:socket, name:false, color:getColor() } socket.on('message',function(msg){ var obj = {time:getTime(),color:client.color}; if(!client.name){ client.name = msg; obj['text'] = client.name; obj['author'] = 'System'; obj['type'] = 'welcome'; console.log(client.name + 'login'); socket.emit('system',obj); socket.broadcast.emit('system',obj); }else{ obj['text'] = msg; obj['author'] = client.name; obj['type'] = 'message'; console.log(client.name+'say:'+msg); socket.emit('message',obj); socket.broadcast.emit('message',obj); } }); socket.on('disconnect',function(){ var obj = { time:getTime(), color:client.color, author:"System", text:client.name, type:'disconnect' }; socket.broadcast.emit('system',obj); console.log(client.name+'Disconnect'); }); });
app.configure(function(){ app.set('port',process.env.PORT || 3000); app.set('views',__dirname + '/views'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname,'public'))); }); app.configure('development',function(){ app.use(express.errorHandler()); });
app.get('/',function(req,res){ res.sendfile('views/chat.html'); }); server.listen(app.get('port'),function(){ console.log('Express server listening on port '+app.get('port')); }); var getTime=function(){ var date = new Date(); return date.getHours()+":"+date.getMinutes()+":"+date.getSeconds(); } var getColor=function(){ var colors = ['aliceblue','antiquewhite','aqua','aquamarine','pink','red','green', 'orange','blue','blueviolet','brown','burlywood','cadetblue']; return colors[Math.round(Math.random() * 10000 % colors.length)]; }
|