Skip to content

Commit bafe684

Browse files
refactor: refactor the handling of the options
1 parent 61e639b commit bafe684

File tree

2 files changed

+43
-49
lines changed

2 files changed

+43
-49
lines changed

Diff for: lib/server.js

+31-39
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,30 @@ class Server extends EventEmitter {
1414
* @param {Object} options
1515
* @api public
1616
*/
17-
constructor(opts) {
17+
constructor(opts = {}) {
1818
super();
1919

2020
this.clients = {};
2121
this.clientsCount = 0;
2222

23-
opts = opts || {};
24-
25-
this.wsEngine = opts.wsEngine || process.env.EIO_WS_ENGINE || "ws";
26-
this.pingTimeout = opts.pingTimeout || 5000;
27-
this.pingInterval = opts.pingInterval || 25000;
28-
this.upgradeTimeout = opts.upgradeTimeout || 10000;
29-
this.maxHttpBufferSize = opts.maxHttpBufferSize || 10e7;
30-
this.transports = opts.transports || Object.keys(transports);
31-
this.allowUpgrades = false !== opts.allowUpgrades;
32-
this.allowRequest = opts.allowRequest;
33-
this.perMessageDeflate =
34-
false !== opts.perMessageDeflate ? opts.perMessageDeflate || true : false;
35-
this.httpCompression =
36-
false !== opts.httpCompression ? opts.httpCompression || {} : false;
37-
this.initialPacket = opts.initialPacket;
38-
39-
this.opts = Object.assign({}, opts);
23+
this.opts = Object.assign(
24+
{
25+
wsEngine: process.env.EIO_WS_ENGINE || "ws",
26+
pingTimeout: 5000,
27+
pingInterval: 25000,
28+
upgradeTimeout: 10000,
29+
maxHttpBufferSize: 10e7,
30+
transports: Object.keys(transports),
31+
allowUpgrades: true,
32+
perMessageDeflate: {
33+
threshold: 1024
34+
},
35+
httpCompression: {
36+
threshold: 1024
37+
}
38+
},
39+
opts
40+
);
4041

4142
if (opts.cookie) {
4243
this.opts.cookie = Object.assign(
@@ -50,15 +51,6 @@ class Server extends EventEmitter {
5051
);
5152
}
5253

53-
// initialize compression options
54-
["perMessageDeflate", "httpCompression"].forEach(type => {
55-
let compression = this[type];
56-
if (true === compression) this[type] = compression = {};
57-
if (compression && null == compression.threshold) {
58-
compression.threshold = 1024;
59-
}
60-
});
61-
6254
this.init();
6355
}
6456

@@ -68,12 +60,12 @@ class Server extends EventEmitter {
6860
* @api private
6961
*/
7062
init() {
71-
if (!~this.transports.indexOf("websocket")) return;
63+
if (!~this.opts.transports.indexOf("websocket")) return;
7264

7365
if (this.ws) this.ws.close();
7466

7567
let wsModule;
76-
switch (this.wsEngine) {
68+
switch (this.opts.wsEngine) {
7769
case "uws":
7870
wsModule = require("uws");
7971
break;
@@ -86,8 +78,8 @@ class Server extends EventEmitter {
8678
this.ws = new wsModule.Server({
8779
noServer: true,
8880
clientTracking: false,
89-
perMessageDeflate: this.perMessageDeflate,
90-
maxPayload: this.maxHttpBufferSize
81+
perMessageDeflate: this.opts.perMessageDeflate,
82+
maxPayload: this.opts.maxHttpBufferSize
9183
});
9284
}
9385

@@ -98,7 +90,7 @@ class Server extends EventEmitter {
9890
* @api public
9991
*/
10092
upgrades(transport) {
101-
if (!this.allowUpgrades) return [];
93+
if (!this.opts.allowUpgrades) return [];
10294
return transports[transport].upgradesTo || [];
10395
}
10496

@@ -112,7 +104,7 @@ class Server extends EventEmitter {
112104
verify(req, upgrade, fn) {
113105
// transport check
114106
const transport = req._query.transport;
115-
if (!~this.transports.indexOf(transport)) {
107+
if (!~this.opts.transports.indexOf(transport)) {
116108
debug('unknown transport "%s"', transport);
117109
return fn(Server.errors.UNKNOWN_TRANSPORT, false);
118110
}
@@ -140,8 +132,8 @@ class Server extends EventEmitter {
140132
// handshake is GET only
141133
if ("GET" !== req.method)
142134
return fn(Server.errors.BAD_HANDSHAKE_METHOD, false);
143-
if (!this.allowRequest) return fn(null, true);
144-
return this.allowRequest(req, fn);
135+
if (!this.opts.allowRequest) return fn(null, true);
136+
return this.opts.allowRequest(req, fn);
145137
}
146138

147139
fn(null, true);
@@ -240,10 +232,10 @@ class Server extends EventEmitter {
240232
try {
241233
var transport = new transports[transportName](req);
242234
if ("polling" === transportName) {
243-
transport.maxHttpBufferSize = this.maxHttpBufferSize;
244-
transport.httpCompression = this.httpCompression;
235+
transport.maxHttpBufferSize = this.opts.maxHttpBufferSize;
236+
transport.httpCompression = this.opts.httpCompression;
245237
} else if ("websocket" === transportName) {
246-
transport.perMessageDeflate = this.perMessageDeflate;
238+
transport.perMessageDeflate = this.opts.perMessageDeflate;
247239
}
248240

249241
if (req._query && req._query.b64) {
@@ -424,7 +416,7 @@ class Server extends EventEmitter {
424416
}
425417
});
426418

427-
if (~self.transports.indexOf("websocket")) {
419+
if (~self.opts.transports.indexOf("websocket")) {
428420
server.on("upgrade", function(req, socket, head) {
429421
if (check(req)) {
430422
self.handleUpgrade(req, socket, head);

Diff for: lib/socket.js

+12-10
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ class Socket extends EventEmitter {
5151
JSON.stringify({
5252
sid: this.id,
5353
upgrades: this.getAvailableUpgrades(),
54-
pingInterval: this.server.pingInterval,
55-
pingTimeout: this.server.pingTimeout
54+
pingInterval: this.server.opts.pingInterval,
55+
pingTimeout: this.server.opts.pingTimeout
5656
})
5757
);
5858

59-
if (this.server.initialPacket) {
60-
this.sendPacket("message", this.server.initialPacket);
59+
if (this.server.opts.initialPacket) {
60+
this.sendPacket("message", this.server.opts.initialPacket);
6161
}
6262

6363
this.emit("open");
@@ -78,7 +78,9 @@ class Socket extends EventEmitter {
7878

7979
// Reset ping timeout on any packet, incoming data is a good sign of
8080
// other side's liveness
81-
this.resetPingTimeout(this.server.pingInterval + this.server.pingTimeout);
81+
this.resetPingTimeout(
82+
this.server.opts.pingInterval + this.server.opts.pingTimeout
83+
);
8284

8385
switch (packet.type) {
8486
case "pong":
@@ -123,11 +125,11 @@ class Socket extends EventEmitter {
123125
this.pingIntervalTimer = setTimeout(() => {
124126
debug(
125127
"writing ping packet - expecting pong within %sms",
126-
this.server.pingTimeout
128+
this.server.opts.pingTimeout
127129
);
128130
this.sendPacket("ping");
129-
this.resetPingTimeout(this.server.pingTimeout);
130-
}, this.server.pingInterval);
131+
this.resetPingTimeout(this.server.opts.pingTimeout);
132+
}, this.server.opts.pingInterval);
131133
}
132134

133135
/**
@@ -195,7 +197,7 @@ class Socket extends EventEmitter {
195197
if ("open" === transport.readyState) {
196198
transport.close();
197199
}
198-
}, this.server.upgradeTimeout);
200+
}, this.server.opts.upgradeTimeout);
199201

200202
function onPacket(packet) {
201203
if ("ping" === packet.type && "probe" === packet.data) {
@@ -455,7 +457,7 @@ class Socket extends EventEmitter {
455457
const l = allUpgrades.length;
456458
for (; i < l; ++i) {
457459
const upg = allUpgrades[i];
458-
if (this.server.transports.indexOf(upg) !== -1) {
460+
if (this.server.opts.transports.indexOf(upg) !== -1) {
459461
availableUpgrades.push(upg);
460462
}
461463
}

0 commit comments

Comments
 (0)