Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[fix] Fix extentions property type
Make `extensions` a getter that returns the negotiated extensions
names.

Fixes #1244
  • Loading branch information
lpinca committed Jan 5, 2018
1 parent 46461a9 commit fdec524
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 22 deletions.
2 changes: 1 addition & 1 deletion lib/websocket-server.js
Expand Up @@ -261,7 +261,7 @@ class WebSocketServer extends EventEmitter {
[PerMessageDeflate.extensionName]: [params]
});
headers.push(`Sec-WebSocket-Extensions: ${value}`);
ws.extensions = extensions;
ws._extensions = extensions;
}

//
Expand Down
47 changes: 26 additions & 21 deletions lib/websocket.js
Expand Up @@ -41,7 +41,6 @@ class WebSocket extends EventEmitter {
super();

this.readyState = WebSocket.CONNECTING;
this.extensions = {};
this.protocol = '';

this._binaryType = constants.BINARY_TYPES[0];
Expand All @@ -52,6 +51,7 @@ class WebSocket extends EventEmitter {
this._closeTimer = null;
this._finalized = false;
this._closeCode = 1006;
this._extensions = {};
this._isServer = true;
this._receiver = null;
this._sender = null;
Expand All @@ -77,18 +77,6 @@ class WebSocket extends EventEmitter {
get CLOSED () { return WebSocket.CLOSED; }
get OPEN () { return WebSocket.OPEN; }

/**
* @type {Number}
*/
get bufferedAmount () {
var amount = 0;

if (this._socket) {
amount = this._socket.bufferSize + this._sender._bufferedBytes;
}
return amount;
}

/**
* This deviates from the WHATWG interface since ws doesn't support the required
* default "blob" type (instead we define a custom "nodebuffer" type).
Expand All @@ -110,6 +98,25 @@ class WebSocket extends EventEmitter {
if (this._receiver) this._receiver._binaryType = type;
}

/**
* @type {Number}
*/
get bufferedAmount () {
var amount = 0;

if (this._socket) {
amount = this._socket.bufferSize + this._sender._bufferedBytes;
}
return amount;
}

/**
* @type {String}
*/
get extensions () {
return Object.keys(this._extensions).join();
}

/**
* Set up the socket and the internal resources.
*
Expand All @@ -122,8 +129,8 @@ class WebSocket extends EventEmitter {
socket.setTimeout(0);
socket.setNoDelay();

this._receiver = new Receiver(this.extensions, maxPayload, this.binaryType);
this._sender = new Sender(socket, this.extensions);
this._receiver = new Receiver(this._extensions, maxPayload, this.binaryType);
this._sender = new Sender(socket, this._extensions);
this._ultron = new Ultron(socket);
this._socket = socket;

Expand Down Expand Up @@ -211,12 +218,10 @@ class WebSocket extends EventEmitter {

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

if (this.extensions[PerMessageDeflate.extensionName]) {
this.extensions[PerMessageDeflate.extensionName].cleanup();
if (this._extensions[PerMessageDeflate.extensionName]) {
this._extensions[PerMessageDeflate.extensionName].cleanup();
}

this.extensions = null;

this.removeAllListeners();
}

Expand Down Expand Up @@ -413,7 +418,7 @@ class WebSocket extends EventEmitter {
fin: true
}, options);

if (!this.extensions[PerMessageDeflate.extensionName]) {
if (!this._extensions[PerMessageDeflate.extensionName]) {
opts.compress = false;
}

Expand Down Expand Up @@ -722,7 +727,7 @@ function initAsClient (address, protocols, options) {
perMessageDeflate.accept(
extensions[PerMessageDeflate.extensionName]
);
this.extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
this._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
}
} catch (err) {
socket.destroy();
Expand Down

0 comments on commit fdec524

Please sign in to comment.