fcs
2025-04-10 0163870d662dc5b7d69ceff977490ede594f7d82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/**
 * 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;
};