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 {
9
9
readonly hasHubValue : boolean ;
10
10
readonly hasTopicsValue : boolean ;
11
11
eventSources : Array < EventSource > ;
12
+ listeners : WeakMap < EventSource , ( event : MessageEvent ) => void > ;
12
13
initialize ( ) : void ;
13
14
connect ( ) : void ;
14
15
disconnect ( ) : void ;
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ class default_1 extends Controller {
4
4
constructor ( ) {
5
5
super ( ...arguments ) ;
6
6
this . eventSources = [ ] ;
7
+ this . listeners = new WeakMap ( ) ;
7
8
}
8
9
initialize ( ) {
9
10
const errorMessages = [ ] ;
@@ -25,13 +26,18 @@ class default_1 extends Controller {
25
26
return ;
26
27
}
27
28
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 ) ;
29
32
} ) ;
30
33
this . dispatchEvent ( 'connect' , { eventSources : this . eventSources } ) ;
31
34
}
32
35
disconnect ( ) {
33
36
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
+ }
35
41
eventSource . close ( ) ;
36
42
} ) ;
37
43
this . eventSources = [ ] ;
Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ export default class extends Controller {
25
25
declare readonly hasTopicsValue : boolean ;
26
26
27
27
eventSources : Array < EventSource > = [ ] ;
28
+ listeners : WeakMap < EventSource , ( event : MessageEvent ) => void > = new WeakMap ( ) ;
28
29
29
30
initialize ( ) {
30
31
const errorMessages : Array < string > = [ ] ;
@@ -50,15 +51,21 @@ export default class extends Controller {
50
51
}
51
52
52
53
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 ) ;
54
57
} ) ;
55
58
56
59
this . dispatchEvent ( 'connect' , { eventSources : this . eventSources } ) ;
57
60
}
58
61
59
62
disconnect ( ) {
60
63
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
+
62
69
eventSource . close ( ) ;
63
70
} ) ;
64
71
You can’t perform that action at this time.
0 commit comments