Alternate Server Sent Events package (Version 2.0.0)
Alternate-SSE is a small sized javascript projecttending to replace the standard server sent event handler.
There are few things that I dont like about the standard package
-
TimeInterval (std SSE)
Time interval between polls is preset and is not changeable and if it is than you must be really know what you are doing .... -
Server End Point (std SSE)
Same thing as above, you set it once and that is it -
Event management (std SSE)
Not pauseable, not cancellable, not resumable
let ASSE = new AlternateSSE( fetchOptions, options );
-
FetchOptions
type => object of key value pairs:\
path: server endpoint --- optional is a path generator function is supplied headers: if any are needed -
Options
type => object of key value pairs:
stopCount: 1..Infinity
intervalSeconds: 1..Infinity
onBeforeAbort: Fire this function before aborting
onBeforePause: Fire this function before pausing
onBeforeResume: Fire this function before resuming
onNoObservers: Fire this function when there are no event observers\ -
Illustration
let counter = 0;
let rawPath = 'https://reqres.in/api/products/';
//***************************************** */
//Example of path generator function
adjustFetchOptions = ( ) =>{
//*we just need 5 endpoints --- usefull by urls with pagination indexes
if ( counter > 5 )
return ASSE.abortCycle( );
counter++;
return {path:`${rawPath}${counter}`, headers:{someheader: 'somevalue'}}
}
//***************************************** */
//Example of event Observers
event_watcher_1( response ) {
let a = 1+1;
//..... code goes here
};
event_watcher_2( response ) {
let b = 1+1;
//..... code goes here
};
ASSE.setFetchOptions(adjustFetchOptions)
.subscribe(event_watcher_1)
.subscribe(event_watcher_2)
.subscribe(event_watcher_n)
// like wise when unsubscribing event watchers
ASSE.unsubscribe(event_watcher_2)
.unsubscribe(event_watcher_29)
- Event management
let pauseBtn = document.querySelector('#btn1');
let resumeBtn = document.querySelector('#btn2');
let abortBtn = document.querySelector('#btn3');
pauseBtn.addEventListener('click', ASSE.pauseCycle);
resumeBtn.addEventListener('click', ASSE.resumeCycle);
abortBtn.addEventListener('click', ASSE.abortCycle);
Author: C. Mahmoud / MacLeen 2021 v 2.0.0 / email: [email protected]
For bugs, suggestions or any other info please contact me on my email.