File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { connectAnonymous } from "../lib" ;
2+
3+ async function sleep ( ms : number ) : Promise < void > {
4+ return new Promise ( resolve => setTimeout ( resolve , ms ) ) ;
5+ }
6+
7+ async function main ( ) {
8+ let retryDelay = 1000 ; // 1 second
9+ const maxDelay = 30000 ; // 30 seconds
10+
11+ for ( ; ; ) {
12+ try {
13+ const session = await connectAnonymous ( "ws://localhost:8080/ws" , "realm1" ) ;
14+ console . log ( "Connected successfully" ) ;
15+
16+ // Reset backoff after successful connection
17+ retryDelay = 1000 ;
18+
19+ // Wait for disconnect
20+ const disconnected = new Promise < void > ( resolve => {
21+ session . setDisconnectCallback ( async ( ) => {
22+ console . log ( "Disconnected from router!" ) ;
23+ resolve ( ) ;
24+ } ) ;
25+ } ) ;
26+
27+ await disconnected ;
28+ console . log ( "Retrying connection..." ) ;
29+
30+ } catch ( err ) {
31+ console . error ( `Failed to connect: ${ err } ` ) ;
32+ console . log ( `Retrying in ${ retryDelay / 1000 } s...` ) ;
33+ await sleep ( retryDelay ) ;
34+
35+ // Exponential backoff
36+ retryDelay = Math . min ( retryDelay * 2 , maxDelay ) ;
37+ }
38+ }
39+ }
40+
41+ main ( ) . catch ( err => console . error ( `Fatal error: ${ err } ` ) ) ;
You can’t perform that action at this time.
0 commit comments