File tree Expand file tree Collapse file tree 3 files changed +18
-4
lines changed Expand file tree Collapse file tree 3 files changed +18
-4
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ export default class extends Controller {
99 readonly hasHubValue : boolean ;
1010 readonly hasTopicsValue : boolean ;
1111 eventSources : Array < EventSource > ;
12+ listeners : WeakMap < EventSource , ( event : MessageEvent ) => void > ;
1213 initialize ( ) : void ;
1314 connect ( ) : void ;
1415 disconnect ( ) : void ;
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ class default_1 extends Controller {
44 constructor ( ) {
55 super ( ...arguments ) ;
66 this . eventSources = [ ] ;
7+ this . listeners = new WeakMap ( ) ;
78 }
89 initialize ( ) {
910 const errorMessages = [ ] ;
@@ -25,13 +26,18 @@ class default_1 extends Controller {
2526 return ;
2627 }
2728 this . eventSources . forEach ( ( eventSource ) => {
28- eventSource . addEventListener ( 'message' , ( event ) => this . _notify ( JSON . parse ( event . data ) . summary ) ) ;
29+ const listener = ( event ) => this . _notify ( JSON . parse ( event . data ) . summary ) ;
30+ eventSource . addEventListener ( 'message' , listener ) ;
31+ this . listeners . set ( eventSource , listener ) ;
2932 } ) ;
3033 this . dispatchEvent ( 'connect' , { eventSources : this . eventSources } ) ;
3134 }
3235 disconnect ( ) {
3336 this . eventSources . forEach ( ( eventSource ) => {
34- eventSource . removeEventListener ( 'message' , this . _notify ) ;
37+ const listener = this . listeners . get ( eventSource ) ;
38+ if ( listener ) {
39+ eventSource . removeEventListener ( 'message' , listener ) ;
40+ }
3541 eventSource . close ( ) ;
3642 } ) ;
3743 this . eventSources = [ ] ;
Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ export default class extends Controller {
2525 declare readonly hasTopicsValue : boolean ;
2626
2727 eventSources : Array < EventSource > = [ ] ;
28+ listeners : WeakMap < EventSource , ( event : MessageEvent ) => void > = new WeakMap ( ) ;
2829
2930 initialize ( ) {
3031 const errorMessages : Array < string > = [ ] ;
@@ -50,15 +51,21 @@ export default class extends Controller {
5051 }
5152
5253 this . eventSources . forEach ( ( eventSource ) => {
53- eventSource . addEventListener ( 'message' , ( event ) => this . _notify ( JSON . parse ( event . data ) . summary ) ) ;
54+ const listener = ( event : MessageEvent ) => this . _notify ( JSON . parse ( event . data ) . summary ) ;
55+ eventSource . addEventListener ( 'message' , listener ) ;
56+ this . listeners . set ( eventSource , listener ) ;
5457 } ) ;
5558
5659 this . dispatchEvent ( 'connect' , { eventSources : this . eventSources } ) ;
5760 }
5861
5962 disconnect ( ) {
6063 this . eventSources . forEach ( ( eventSource ) => {
61- eventSource . removeEventListener ( 'message' , this . _notify ) ;
64+ const listener = this . listeners . get ( eventSource ) ;
65+ if ( listener ) {
66+ eventSource . removeEventListener ( 'message' , listener ) ;
67+ }
68+
6269 eventSource . close ( ) ;
6370 } ) ;
6471
You can’t perform that action at this time.
0 commit comments