| /** |
| * Module dependencies. |
| */ |
| |
| const http = require("http"); |
| const Server = require("./server"); |
| |
| /** |
| * 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 new Server(...arguments); |
| }; |
| |
| /** |
| * Protocol revision number. |
| * |
| * @api public |
| */ |
| |
| exports.protocol = 1; |
| |
| /** |
| * Expose Server constructor. |
| * |
| * @api public |
| */ |
| |
| exports.Server = 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 = {}; |
| } |
| |
| const server = http.createServer(function(req, res) { |
| res.writeHead(501); |
| res.end("Not Implemented"); |
| }); |
| |
| // create engine server |
| const 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) { |
| const engine = new Server(options); |
| engine.attach(server, options); |
| return engine; |
| } |