server-ssl.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. * Important note: this application is not suitable for benchmarks!
  3. */
  4. var https = require('https')
  5. , url = require('url')
  6. , fs = require('fs')
  7. , io = require('../')
  8. , sys = require(process.binding('natives').util ? 'util' : 'sys')
  9. , server;
  10. server = https.createServer({
  11. key: fs.readFileSync(__dirname + '/key.key')
  12. , cert: fs.readFileSync(__dirname + '/cert.crt')
  13. }, function(req, res){
  14. // your normal server code
  15. var path = url.parse(req.url).pathname;
  16. switch (path){
  17. case '/':
  18. res.writeHead(200, {'Content-Type': 'text/html'});
  19. res.write('<h1>Welcome. Try the <a href="/chat-ssl.html">SSL Chat</a> example.</h1>');
  20. res.end();
  21. break;
  22. case '/json.js':
  23. case '/chat-ssl.html':
  24. fs.readFile(__dirname + path, function(err, data){
  25. if (err) return send404(res);
  26. res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'})
  27. res.write(data, 'utf8');
  28. res.end();
  29. });
  30. break;
  31. default: send404(res);
  32. }
  33. }),
  34. send404 = function(res){
  35. res.writeHead(404);
  36. res.write('404');
  37. res.end();
  38. };
  39. server.listen(443);
  40. // socket.io, I choose you
  41. // simplest chat application evar
  42. var io = io.listen(server)
  43. , buffer = [];
  44. io.on('connection', function(client){
  45. client.send({ buffer: buffer });
  46. client.broadcast({ announcement: client.sessionId + ' connected' });
  47. client.on('message', function(message){
  48. var msg = { message: [client.sessionId, message] };
  49. buffer.push(msg);
  50. if (buffer.length > 15) buffer.shift();
  51. client.broadcast(msg);
  52. });
  53. client.on('disconnect', function(){
  54. client.broadcast({ announcement: client.sessionId + ' disconnected' });
  55. });
  56. });