/**
|
|
* Module dependencies.
|
|
*/
|
|
|
|
var http = require('http');
|
|
|
|
/**
|
|
* Invoking the library as a function delegates to attach if the first argument
|
|
* is an `http.Server`.
|
|
*
|
|
* If there are no arguments or the first argument is an options object, then
|
|
* a new Server instance is returned.
|
|
*
|
|
* @param {http.Server} server (if specified, will be attached to by the new Server instance)
|
|
* @param {Object} options
|
|
* @return {Server} engine server
|
|
* @api public
|
|
*/
|
|
|
|
exports = module.exports = function () {
|
|
// backwards compatible use as `.attach`
|
|
// if first argument is an http server
|
|
if (arguments.length && arguments[0] instanceof http.Server) {
|
|
return attach.apply(this, arguments);
|
|
}
|
|
|
|
// if first argument is not an http server, then just make a regular eio server
|
|
return exports.Server.apply(null, arguments);
|
|
};
|
|
|
|
/**
|
|
* Protocol revision number.
|
|
*
|
|
* @api public
|
|
*/
|
|
|
|
exports.protocol = 1;
|
|
|
|
/**
|
|
* Expose Server constructor.
|
|
*
|
|
* @api public
|
|
*/
|
|
|
|
exports.Server = require('./server');
|
|
|
|
/**
|
|
* Expose Socket constructor.
|
|
*
|
|
* @api public
|
|
*/
|
|
|
|
exports.Socket = require('./socket');
|
|
|
|
/**
|
|
* Expose Transport constructor.
|
|
*
|
|
* @api public
|
|
*/
|
|
|
|
exports.Transport = require('./transport');
|
|
|
|
/**
|
|
* Expose mutable list of available transports.
|
|
*
|
|
* @api public
|
|
*/
|
|
|
|
exports.transports = require('./transports');
|
|
|
|
/**
|
|
* Exports parser.
|
|
*
|
|
* @api public
|
|
*/
|
|
|
|
exports.parser = require('engine.io-parser');
|
|
|
|
/**
|
|
* Creates an http.Server exclusively used for WS upgrades.
|
|
*
|
|
* @param {Number} port
|
|
* @param {Function} callback
|
|
* @param {Object} options
|
|
* @return {Server} websocket.io server
|
|
* @api public
|
|
*/
|
|
|
|
exports.listen = listen;
|
|
|
|
function listen (port, options, fn) {
|
|
if ('function' === typeof options) {
|
|
fn = options;
|
|
options = {};
|
|
}
|
|
|
|
var server = http.createServer(function (req, res) {
|
|
res.writeHead(501);
|
|
res.end('Not Implemented');
|
|
});
|
|
|
|
server.listen(port, fn);
|
|
|
|
// create engine server
|
|
var engine = exports.attach(server, options);
|
|
engine.httpServer = server;
|
|
|
|
return engine;
|
|
}
|
|
|
|
/**
|
|
* Captures upgrade requests for a http.Server.
|
|
*
|
|
* @param {http.Server} server
|
|
* @param {Object} options
|
|
* @return {Server} engine server
|
|
* @api public
|
|
*/
|
|
|
|
exports.attach = attach;
|
|
|
|
function attach (server, options) {
|
|
var engine = new exports.Server(options);
|
|
engine.attach(server, options);
|
|
return engine;
|
|
}
|