server.benchmark.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /**
  2. * Important note: this application is not suitable for benchmarks!
  3. */
  4. var http = require('http')
  5. , url = require('url')
  6. , fs = require('fs')
  7. , io = require('../')
  8. , sys = require(process.binding('natives').util ? 'util' : 'sys')
  9. , server;
  10. server = http.createServer(function(req, res){
  11. // your normal server code
  12. var path = url.parse(req.url).pathname;
  13. switch (path){
  14. case '/':
  15. res.writeHead(200, {'Content-Type': 'text/html'});
  16. res.write([
  17. '<h1>Welcome.</h1>'
  18. , '<h2>Transports:</h2>'
  19. , '<ul>'
  20. , '<li><a href="/benchmark.html?xhr-polling">Long polling</a></li>'
  21. , '<li><a href="/benchmark.html?xhr-multipart">Multipart XHR</a></li>'
  22. , '<li><a href="/benchmark.html?websocket">WebSocket</a></li>'
  23. , '<li><a href="/benchmark.html?flashsocket">FlashSocket</a></li>'
  24. , '<li><a href="/benchmark.html?htmlfile">HTMLFile</a></li>'
  25. , '<li><a href="/benchmark.html?jsonp-polling">JSONP Polling</a></li>'
  26. , '</ul>'
  27. ].join(''));
  28. res.end();
  29. break;
  30. case '/json.js':
  31. case '/benchmark.html':
  32. fs.readFile(__dirname + path, function(err, data){
  33. if (err) return send404(res);
  34. res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'})
  35. res.write(data.toString().replace('{transport}'
  36. , req.url.replace('/benchmark.html', ''))
  37. , 'utf8');
  38. res.end();
  39. });
  40. break;
  41. default: send404(res);
  42. }
  43. }),
  44. send404 = function(res){
  45. res.writeHead(404);
  46. res.write('404');
  47. res.end();
  48. };
  49. server.listen(8080);
  50. // socket.io, I choose you
  51. // simplest chat application evar
  52. var io = io.listen(server)
  53. , buffer = [];
  54. io.on('connection', function(client){
  55. // track latency and number of messages
  56. client.latency = 0;
  57. client.messages = 0;
  58. client.send(Date.now());
  59. client.on('message', function(message){
  60. client.latency +=
  61. console.log('Message latency:', Date.now() - Number(message));
  62. });
  63. client.on('disconnect', function(){
  64. console.log();
  65. });
  66. });