Skip to content

Commit fdec524

Browse files
committedJan 5, 2018
[fix] Fix extentions property type
Make `extensions` a getter that returns the negotiated extensions names. Fixes #1244
1 parent 46461a9 commit fdec524

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed
 

Diff for: ‎lib/websocket-server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ class WebSocketServer extends EventEmitter {
261261
[PerMessageDeflate.extensionName]: [params]
262262
});
263263
headers.push(`Sec-WebSocket-Extensions: ${value}`);
264-
ws.extensions = extensions;
264+
ws._extensions = extensions;
265265
}
266266

267267
//

Diff for: ‎lib/websocket.js

+26-21
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class WebSocket extends EventEmitter {
4141
super();
4242

4343
this.readyState = WebSocket.CONNECTING;
44-
this.extensions = {};
4544
this.protocol = '';
4645

4746
this._binaryType = constants.BINARY_TYPES[0];
@@ -52,6 +51,7 @@ class WebSocket extends EventEmitter {
5251
this._closeTimer = null;
5352
this._finalized = false;
5453
this._closeCode = 1006;
54+
this._extensions = {};
5555
this._isServer = true;
5656
this._receiver = null;
5757
this._sender = null;
@@ -77,18 +77,6 @@ class WebSocket extends EventEmitter {
7777
get CLOSED () { return WebSocket.CLOSED; }
7878
get OPEN () { return WebSocket.OPEN; }
7979

80-
/**
81-
* @type {Number}
82-
*/
83-
get bufferedAmount () {
84-
var amount = 0;
85-
86-
if (this._socket) {
87-
amount = this._socket.bufferSize + this._sender._bufferedBytes;
88-
}
89-
return amount;
90-
}
91-
9280
/**
9381
* This deviates from the WHATWG interface since ws doesn't support the required
9482
* default "blob" type (instead we define a custom "nodebuffer" type).
@@ -110,6 +98,25 @@ class WebSocket extends EventEmitter {
11098
if (this._receiver) this._receiver._binaryType = type;
11199
}
112100

101+
/**
102+
* @type {Number}
103+
*/
104+
get bufferedAmount () {
105+
var amount = 0;
106+
107+
if (this._socket) {
108+
amount = this._socket.bufferSize + this._sender._bufferedBytes;
109+
}
110+
return amount;
111+
}
112+
113+
/**
114+
* @type {String}
115+
*/
116+
get extensions () {
117+
return Object.keys(this._extensions).join();
118+
}
119+
113120
/**
114121
* Set up the socket and the internal resources.
115122
*
@@ -122,8 +129,8 @@ class WebSocket extends EventEmitter {
122129
socket.setTimeout(0);
123130
socket.setNoDelay();
124131

125-
this._receiver = new Receiver(this.extensions, maxPayload, this.binaryType);
126-
this._sender = new Sender(socket, this.extensions);
132+
this._receiver = new Receiver(this._extensions, maxPayload, this.binaryType);
133+
this._sender = new Sender(socket, this._extensions);
127134
this._ultron = new Ultron(socket);
128135
this._socket = socket;
129136

@@ -211,12 +218,10 @@ class WebSocket extends EventEmitter {
211218

212219
this.emit('close', this._closeCode, this._closeMessage);
213220

214-
if (this.extensions[PerMessageDeflate.extensionName]) {
215-
this.extensions[PerMessageDeflate.extensionName].cleanup();
221+
if (this._extensions[PerMessageDeflate.extensionName]) {
222+
this._extensions[PerMessageDeflate.extensionName].cleanup();
216223
}
217224

218-
this.extensions = null;
219-
220225
this.removeAllListeners();
221226
}
222227

@@ -413,7 +418,7 @@ class WebSocket extends EventEmitter {
413418
fin: true
414419
}, options);
415420

416-
if (!this.extensions[PerMessageDeflate.extensionName]) {
421+
if (!this._extensions[PerMessageDeflate.extensionName]) {
417422
opts.compress = false;
418423
}
419424

@@ -722,7 +727,7 @@ function initAsClient (address, protocols, options) {
722727
perMessageDeflate.accept(
723728
extensions[PerMessageDeflate.extensionName]
724729
);
725-
this.extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
730+
this._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
726731
}
727732
} catch (err) {
728733
socket.destroy();

0 commit comments

Comments
 (0)
Please sign in to comment.