arnaucube
arnaucube/raspberryGPIOhtmlserverPublic Self-hosted repository
raspberryGPIOhtmlserver/node_modules/engine.io/lib/engine.io.js
node_modules/engine.io/lib/engine.io.jsRaw
  1/**
  2 * Module dependencies.
  3 */
  4
  5var http = require('http');
  6
  7/**
  8 * Invoking the library as a function delegates to attach if the first argument
  9 * is an `http.Server`.
 10 *
 11 * If there are no arguments or the first argument is an options object, then
 12 * a new Server instance is returned.
 13 *
 14 * @param {http.Server} server (if specified, will be attached to by the new Server instance)
 15 * @param {Object} options
 16 * @return {Server} engine server
 17 * @api public
 18 */
 19
 20exports = module.exports = function() {
 21  // backwards compatible use as `.attach`
 22  // if first argument is an http server
 23  if (arguments.length && arguments[0] instanceof http.Server) {
 24    return attach.apply(this, arguments);
 25  }
 26
 27  // if first argument is not an http server, then just make a regular eio server
 28  return exports.Server.apply(null, arguments);
 29};
 30
 31/**
 32 * Protocol revision number.
 33 *
 34 * @api public
 35 */
 36
 37exports.protocol = 1;
 38
 39/**
 40 * Expose Server constructor.
 41 *
 42 * @api public
 43 */
 44
 45exports.Server = require('./server');
 46
 47/**
 48 * Expose Server constructor.
 49 *
 50 * @api public
 51 */
 52
 53exports.Socket = require('./socket');
 54
 55/**
 56 * Expose Transport constructor.
 57 *
 58 * @api public
 59 */
 60
 61exports.Transport = require('./transport');
 62
 63/**
 64 * Expose mutable list of available transports.
 65 *
 66 * @api public
 67 */
 68
 69exports.transports = require('./transports');
 70
 71/**
 72 * Exports parser.
 73 *
 74 * @api public
 75 */
 76
 77exports.parser = require('engine.io-parser');
 78
 79/**
 80 * Creates an http.Server exclusively used for WS upgrades.
 81 *
 82 * @param {Number} port
 83 * @param {Function} callback
 84 * @param {Object} options
 85 * @return {Server} websocket.io server
 86 * @api public
 87 */
 88
 89exports.listen = listen;
 90
 91function listen(port, options, fn) {
 92  if ('function' == typeof options) {
 93    fn = options;
 94    options = {};
 95  }
 96
 97  var server = http.createServer(function (req, res) {
 98    res.writeHead(501);
 99    res.end('Not Implemented');
100  });
101
102  server.listen(port, fn);
103
104  // create engine server
105  var engine = exports.attach(server, options);
106  engine.httpServer = server;
107
108  return engine;
109};
110
111/**
112 * Captures upgrade requests for a http.Server.
113 *
114 * @param {http.Server} server
115 * @param {Object} options
116 * @return {Server} engine server
117 * @api public
118 */
119
120exports.attach = attach;
121
122function attach(server, options) {
123  var engine = new exports.Server(options);
124  engine.attach(server, options);
125  return engine;
126};