You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
2.3 KiB
126 lines
2.3 KiB
/** |
|
* 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; |
|
}
|
|
|