forked from socketio/engine.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathengine.io.js
127 lines (101 loc) · 2.33 KB
/
engine.io.js
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
127
/**
* 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;
}