File tree 3 files changed +29
-2
lines changed
3 files changed +29
-2
lines changed Original file line number Diff line number Diff line change @@ -476,7 +476,9 @@ The current state of the connection. This is one of the ready state constants.
476
476
- ` type ` {String} A string representing the event type to remove.
477
477
- ` listener ` {Function} The listener to remove.
478
478
479
- Removes an event listener emulating the ` EventTarget ` interface.
479
+ Removes an event listener emulating the ` EventTarget ` interface. This method
480
+ only removes listeners added with
481
+ [ ` websocket.addEventListener() ` ] ( #websocketaddeventlistenertype-listener-options ) .
480
482
481
483
### websocket.send(data[ , options] [ , callback ] )
482
484
Original file line number Diff line number Diff line change @@ -173,8 +173,9 @@ const EventTarget = {
173
173
*/
174
174
removeEventListener ( type , handler ) {
175
175
for ( const listener of this . listeners ( type ) ) {
176
- if ( listener === handler || listener [ kListener ] === handler ) {
176
+ if ( listener [ kListener ] === handler ) {
177
177
this . removeListener ( type , listener ) ;
178
+ break ;
178
179
}
179
180
}
180
181
}
Original file line number Diff line number Diff line change @@ -2233,6 +2233,30 @@ describe('WebSocket', () => {
2233
2233
2234
2234
assert . strictEqual ( ws . listenerCount ( 'message' ) , 0 ) ;
2235
2235
assert . strictEqual ( ws . listenerCount ( 'open' ) , 0 ) ;
2236
+
2237
+ // Multiple listeners.
2238
+ ws . addEventListener ( 'message' , NOOP ) ;
2239
+ ws . addEventListener ( 'message' , NOOP ) ;
2240
+
2241
+ assert . strictEqual ( ws . listeners ( 'message' ) [ 0 ] [ kListener ] , NOOP ) ;
2242
+ assert . strictEqual ( ws . listeners ( 'message' ) [ 1 ] [ kListener ] , NOOP ) ;
2243
+
2244
+ ws . removeEventListener ( 'message' , NOOP ) ;
2245
+
2246
+ assert . strictEqual ( ws . listeners ( 'message' ) [ 0 ] [ kListener ] , NOOP ) ;
2247
+
2248
+ ws . removeEventListener ( 'message' , NOOP ) ;
2249
+
2250
+ assert . strictEqual ( ws . listenerCount ( 'message' ) , 0 ) ;
2251
+
2252
+ // Listeners not added with `websocket.addEventListener()`.
2253
+ ws . on ( 'message' , NOOP ) ;
2254
+
2255
+ assert . deepStrictEqual ( ws . listeners ( 'message' ) , [ NOOP ] ) ;
2256
+
2257
+ ws . removeEventListener ( 'message' , NOOP ) ;
2258
+
2259
+ assert . deepStrictEqual ( ws . listeners ( 'message' ) , [ NOOP ] ) ;
2236
2260
} ) ;
2237
2261
2238
2262
it ( 'wraps text data in a `MessageEvent`' , ( done ) => {
You can’t perform that action at this time.
0 commit comments