diff --git a/types/primus/index.d.ts b/types/primus/index.d.ts index 7f45ffde11..6533d0f81a 100644 --- a/types/primus/index.d.ts +++ b/types/primus/index.d.ts @@ -145,6 +145,20 @@ declare namespace Primus { on(event: 'end', handler: () => void): this; } + interface ReconnectOpts { + max?: number; + min?: number; + retries?: number | null; + 'reconnect timeout'?: number; + factor?: number; + } + interface ReconnectEventOpts extends Required { + start: number; + duration: number; + attempt: number; + backoff: boolean; + scheduled: number; + } interface SocketOptions { // https://github.com/unshiftio/recovery reconnect?: { @@ -173,18 +187,9 @@ declare namespace Primus { emits: emits.emits; id(fn: (id: string) => void): this; - on( - event: - | 'open' - | 'reconnect' - | 'reconnect scheduled' - | 'reconnected' - | 'reconnect timeout' - | 'reconnect failed' - | 'end', - handler: () => void, - ): this; - + on(event: 'open' | 'end', handler: () => void): this; + on(event: 'reconnect' | 'reconnect scheduled' | 'reconnected', handler: (opts: ReconnectEventOpts) => void): this; + on(event: 'reconnect timeout' | 'reconnect failed', handler: (err: Error, opts: ReconnectEventOpts) => void): this; on(event: 'data', handler: (message: any) => void): this; on(event: 'error', handler: (err: Error) => void): this; } diff --git a/types/primus/primus-tests.ts b/types/primus/primus-tests.ts index 1dc04c8e40..5ee1464c76 100644 --- a/types/primus/primus-tests.ts +++ b/types/primus/primus-tests.ts @@ -16,3 +16,8 @@ const client = new Socket('ws://www.example.com'); client.on('open', () => { client.write('foo'); }); + +client.on('reconnect scheduled', (opts) => { + console.log('Reconnecting in %d ms', opts.scheduled); + console.log('This is attempt %d out of %d', opts.attempt, opts.retries); +});