Files
socket.io/example/server.js
Guillermo Rauch 3d11b176fe Expose listener class
Bumped node version
Updated client
Make sure constructors are called
Added tests
2010-07-28 16:33:41 -07:00

64 lines
1.6 KiB
JavaScript

var http = require('http'),
url = require('url'),
fs = require('fs'),
io = require('../'),
sys = require('sys'),
send404 = function(res){
res.writeHead(404);
res.write('404');
res.end();
},
server = http.createServer(function(req, res){
// your normal server code
var path = url.parse(req.url).pathname;
switch (path){
case '/':
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<h1>Welcome. Try the <a href="/chat.html">chat</a> example.</h1>');
res.end();
break;
default:
if (/\.(js|html|swf)$/.test(path)){
try {
var swf = path.substr(-4) === '.swf';
res.writeHead(200, {'Content-Type': swf ? 'application/x-shockwave-flash' : ('text/' + (path.substr(-3) === '.js' ? 'javascript' : 'html'))});
res.write(fs.readFileSync(__dirname + path, swf ? 'binary' : 'utf8'), swf ? 'binary' : 'utf8');
res.end();
} catch(e){
send404(res);
}
break;
}
send404(res);
break;
}
});
server.listen(8080);
// socket.io, I choose you
// simplest chat application evar
var buffer = [],
json = JSON.stringify,
io = io.listen(server);
io.on('connection', function(client){
console.log('test');
client.send(json({ buffer: buffer }));
client.broadcast(json({ announcement: client.sessionId + ' connected' }));
client.on('message', function(){
var msg = { message: [client.sessionId, message] };
buffer.push(msg);
if (buffer.length > 15) buffer.shift();
client.broadcast(json(msg));
});
client.on('disconnect', function(){
client.broadcast(json({ announcement: client.sessionId + ' disconnected' }));
});
});