Sha256: 70c970a84463301af820b9c1d93a1bc8ae282bb3ea44f35704a95b7494da4806

Contents?: true

Size: 1.94 KB

Versions: 29

Compression:

Stored size: 1.94 KB

Contents

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);

Version data entries

29 entries across 24 versions & 11 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/faye-websocket/examples/server.js
disco_app-0.18.0 test/dummy/node_modules/faye-websocket/examples/server.js
disco_app-0.18.2 test/dummy/node_modules/faye-websocket/examples/server.js
tang-0.2.1 spec/tang_app/node_modules/faye-websocket/examples/server.js
tang-0.2.0 spec/tang_app/node_modules/faye-websocket/examples/server.js
tang-0.1.0 spec/tang_app/node_modules/faye-websocket/examples/server.js
tang-0.0.9 spec/tang_app/node_modules/faye-websocket/examples/server.js
enju_library-0.3.8 spec/dummy/node_modules/faye-websocket/examples/server.js
ilog-0.4.1 node_modules/faye-websocket/examples/server.js
ilog-0.4.0 node_modules/faye-websocket/examples/server.js
ilog-0.3.3 node_modules/faye-websocket/examples/server.js
jester-data-8.0.0 node_modules/faye-websocket/examples/server.js
ezii-os-5.2.1 node_modules/faye-websocket/examples/server.js
ezii-os-2.0.1 node_modules/faye-websocket/examples/server.js
ezii-os-1.1.0 node_modules/faye-websocket/examples/server.js
ezii-os-1.0.0 node_modules/faye-websocket/examples/server.js
ezii-os-0.0.0.1.0 node_modules/faye-websocket/examples/server.js
ezii-os-0.0.0.0.1 node_modules/faye-websocket/examples/server.js
blsk-sevcore-0.0.2 blsk_old/bluesky-doc/bluesky-doc/node_modules/faye-websocket/examples/server.js
optimacms-0.4.3 spec/dummy/node_modules/faye-websocket/examples/server.js