| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | var WebSocket = require('..'),    deflate   = require('permessage-deflate'),    fs        = require('fs'),    http      = require('http'),    https     = require('https');var port    = process.argv[2] || 7000,    secure  = process.argv[3] === 'tls',    options = {extensions: [deflate], ping: 5};var upgradeHandler = function(request, socket, head) {  var ws = new WebSocket(request, socket, head, ['irc', 'xmpp'], options);  console.log('[open]', ws.url, ws.version, ws.protocol, request.headers);  ws.pipe(ws);  ws.onclose = function(event) {    console.log('[close]', event.code, event.reason);    ws = null;  };};var requestHandler = function(request, response) {  if (!WebSocket.EventSource.isEventSource(request))    return staticHandler(request, response);  var es   = new WebSocket.EventSource(request, response),      time = parseInt(es.lastEventId, 10) || 0;  console.log('[open]', es.url, es.lastEventId);  var loop = setInterval(function() {    time += 1;    es.send('Time: ' + time);    setTimeout(function() {      if (es) es.send('Update!!', {event: 'update', id: time});    }, 1000);  }, 2000);  fs.createReadStream(__dirname + '/haproxy.conf').pipe(es, {end: false});  es.onclose = function() {    clearInterval(loop);    console.log('[close]', es.url);    es = null;  };};var staticHandler = function(request, response) {  var path = request.url;  fs.readFile(__dirname + path, function(err, content) {    var status = err ? 404 : 200;    response.writeHead(status, {'Content-Type': 'text/html'});    response.write(content || 'Not found');    response.end();  });};var server = secure           ? https.createServer({               key:  fs.readFileSync(__dirname + '/../spec/server.key'),               cert: fs.readFileSync(__dirname + '/../spec/server.crt')             })           : http.createServer();server.on('request', requestHandler);server.on('upgrade', upgradeHandler);server.listen(port);
 |