Advertisement
Aluf

Updated node-websocket-server

Mar 14th, 2015
563
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. // slightly modified version of echo-server.js for the web-sockets demo
  2.  
  3. var sys = require("sys")
  4. , fs = require("fs")
  5. , path = require("path")
  6. , http = require("http")
  7. , ws = require(__dirname + '/node-websocket-server/lib/ws');
  8.  
  9. /*-----------------------------------------------
  10. logging:
  11. -----------------------------------------------*/
  12. var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  13.  
  14. function pad(n) {
  15. return n < 10 ? '0' + n.toString(10) : n.toString(10);
  16. }
  17.  
  18. function timestamp() {
  19. var d = new Date();
  20. return [
  21. d.getDate(),
  22. months[d.getMonth()],
  23. [ pad(d.getHours())
  24. , pad(d.getMinutes())
  25. , pad(d.getSeconds())
  26. , (d.getTime() + "").substr( - 4, 4)
  27. ].join(':')
  28. ].join(' ');
  29. };
  30.  
  31. function log(msg) {
  32. sys.puts(timestamp() + ' - ' + msg.toString());
  33. };
  34.  
  35. function serveFile(req, res){
  36. if( req.url.indexOf("favicon") > -1 ){
  37. log("HTTP: inbound request, served nothing, (favicon)");
  38.  
  39. res.writeHead(200, {'Content-Type': 'image/x-icon'});
  40. res.end("");
  41. } else {
  42. log("HTTP: inbound request, served client.html");
  43.  
  44. res.writeHead(200, {'Content-Type': 'text/html'});
  45. fs.createReadStream( path.normalize(path.join(__dirname, "client.html")), {
  46. 'flags': 'r',
  47. 'encoding': 'binary',
  48. 'mode': 0666,
  49. 'bufferSize': 4 * 1024
  50. }).addListener("data", function(chunk){
  51. res.write(chunk, 'binary');
  52. }).addListener("close",function() {
  53. res.end();
  54. });
  55. }
  56. };
  57.  
  58. /*-----------------------------------------------
  59. Spin up our server:
  60. -----------------------------------------------*/
  61. var httpServer = http.createServer(serveFile);
  62.  
  63.  
  64. var connected = 0;
  65. var server = ws.createServer({
  66. debug: true
  67. }, httpServer);
  68.  
  69. server.addListener("listening", function(){
  70. log("Listening for connections on " + process.ARGV[2]);
  71. });
  72.  
  73. // Handle WebSocket Requests
  74. server.addListener("connection", function(conn){
  75. log("opened connection: "+conn.id);
  76.  
  77. connected++;
  78. server.send(conn.id, connected+'');
  79. conn.broadcast(connected+'');
  80.  
  81. conn.addListener("message", function(message){
  82. log("<"+conn.id+"> "+message);
  83. conn.broadcast(message);
  84. });
  85. });
  86.  
  87. server.addListener("close", function(conn){
  88. log("closed connection: "+conn.id);
  89. connected--;
  90. conn.broadcast(connected+'');
  91. });
  92.  
  93. server.listen(parseInt(process.ARGV[2]) || 8000);
  94. // Handle HTTP Requests:
  95.  
  96. // This will hijack the http server, if the httpserver doesn't
  97. // already respond to http.Server#request
  98.  
  99. // server.addListener("request", serveFile);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement