/** | |
* 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'); | |
}); | |
// create engine server | |
var engine = exports.attach(server, options); | |
engine.httpServer = server; | |
server.listen(port, fn); | |
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; | |
} | |