File tree Expand file tree Collapse file tree 3 files changed +21
-1
lines changed Expand file tree Collapse file tree 3 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -51,11 +51,24 @@ es.addEventListener("error", (event) => {
51
51
}
52
52
});
53
53
54
+ es .addEventListener (" done" , (event ) => {
55
+ console .log (" Done SSE connection." );
56
+ });
57
+
54
58
es .addEventListener (" close" , (event ) => {
55
59
console .log (" Close SSE connection." );
56
60
});
57
61
```
58
62
63
+ ### Done vs Close
64
+
65
+ ` done ` events will fire when server closes the connection.
66
+ By default, the client will automatically reconnect when this happens.
67
+ You can disable reconnections by setting the ` pollingInterval ` option to ` 0 ` .
68
+ ` close ` events will fire when the connection is terminated by the client, using ` .close() ` .
69
+
70
+ ### Headers and params
71
+
59
72
If you want to use Bearer token and/or topics, look at this example (TypeScript):
60
73
61
74
``` typescript
Original file line number Diff line number Diff line change 1
- export type BuiltInEventType = 'open' | 'message' | 'error' | 'close' ;
1
+ export type BuiltInEventType = 'open' | 'message' | 'error' | 'done' | ' close';
2
2
export type EventType < E extends string = never > = E | BuiltInEventType ;
3
3
4
4
export interface MessageEvent {
@@ -12,6 +12,10 @@ export interface OpenEvent {
12
12
type : 'open' ;
13
13
}
14
14
15
+ export interface DoneEvent {
16
+ type : 'done' ;
17
+ }
18
+
15
19
export interface CloseEvent {
16
20
type : 'close' ;
17
21
}
@@ -55,6 +59,7 @@ export interface EventSourceOptions {
55
59
type BuiltInEventMap = {
56
60
'message' : MessageEvent ,
57
61
'open' : OpenEvent ,
62
+ 'done' : DoneEvent ,
58
63
'close' : CloseEvent ,
59
64
'error' : ErrorEvent | TimeoutEvent | ExceptionEvent ,
60
65
} ;
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ class EventSource {
18
18
open : [ ] ,
19
19
message : [ ] ,
20
20
error : [ ] ,
21
+ done : [ ] ,
21
22
close : [ ] ,
22
23
} ;
23
24
@@ -121,6 +122,7 @@ class EventSource {
121
122
if ( xhr . readyState === XMLHttpRequest . DONE ) {
122
123
this . _logDebug ( '[EventSource][onreadystatechange][DONE] Operation done.' ) ;
123
124
this . _pollAgain ( this . interval , false ) ;
125
+ this . dispatch ( 'done' , { type : 'done' } ) ;
124
126
}
125
127
} else if ( xhr . status !== 0 ) {
126
128
this . status = this . ERROR ;
You can’t perform that action at this time.
0 commit comments