@@ -41,7 +41,6 @@ class WebSocket extends EventEmitter {
41
41
super ( ) ;
42
42
43
43
this . readyState = WebSocket . CONNECTING ;
44
- this . extensions = { } ;
45
44
this . protocol = '' ;
46
45
47
46
this . _binaryType = constants . BINARY_TYPES [ 0 ] ;
@@ -52,6 +51,7 @@ class WebSocket extends EventEmitter {
52
51
this . _closeTimer = null ;
53
52
this . _finalized = false ;
54
53
this . _closeCode = 1006 ;
54
+ this . _extensions = { } ;
55
55
this . _isServer = true ;
56
56
this . _receiver = null ;
57
57
this . _sender = null ;
@@ -77,18 +77,6 @@ class WebSocket extends EventEmitter {
77
77
get CLOSED ( ) { return WebSocket . CLOSED ; }
78
78
get OPEN ( ) { return WebSocket . OPEN ; }
79
79
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
-
92
80
/**
93
81
* This deviates from the WHATWG interface since ws doesn't support the required
94
82
* default "blob" type (instead we define a custom "nodebuffer" type).
@@ -110,6 +98,25 @@ class WebSocket extends EventEmitter {
110
98
if ( this . _receiver ) this . _receiver . _binaryType = type ;
111
99
}
112
100
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
+
113
120
/**
114
121
* Set up the socket and the internal resources.
115
122
*
@@ -122,8 +129,8 @@ class WebSocket extends EventEmitter {
122
129
socket . setTimeout ( 0 ) ;
123
130
socket . setNoDelay ( ) ;
124
131
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 ) ;
127
134
this . _ultron = new Ultron ( socket ) ;
128
135
this . _socket = socket ;
129
136
@@ -211,12 +218,10 @@ class WebSocket extends EventEmitter {
211
218
212
219
this . emit ( 'close' , this . _closeCode , this . _closeMessage ) ;
213
220
214
- if ( this . extensions [ PerMessageDeflate . extensionName ] ) {
215
- this . extensions [ PerMessageDeflate . extensionName ] . cleanup ( ) ;
221
+ if ( this . _extensions [ PerMessageDeflate . extensionName ] ) {
222
+ this . _extensions [ PerMessageDeflate . extensionName ] . cleanup ( ) ;
216
223
}
217
224
218
- this . extensions = null ;
219
-
220
225
this . removeAllListeners ( ) ;
221
226
}
222
227
@@ -413,7 +418,7 @@ class WebSocket extends EventEmitter {
413
418
fin : true
414
419
} , options ) ;
415
420
416
- if ( ! this . extensions [ PerMessageDeflate . extensionName ] ) {
421
+ if ( ! this . _extensions [ PerMessageDeflate . extensionName ] ) {
417
422
opts . compress = false ;
418
423
}
419
424
@@ -722,7 +727,7 @@ function initAsClient (address, protocols, options) {
722
727
perMessageDeflate . accept (
723
728
extensions [ PerMessageDeflate . extensionName ]
724
729
) ;
725
- this . extensions [ PerMessageDeflate . extensionName ] = perMessageDeflate ;
730
+ this . _extensions [ PerMessageDeflate . extensionName ] = perMessageDeflate ;
726
731
}
727
732
} catch ( err ) {
728
733
socket . destroy ( ) ;
0 commit comments