Improve types for Primus (#43297)

This commit is contained in:
Christian Tellnes 2020-03-22 21:46:30 +01:00 committed by GitHub
parent 628419fc4f
commit 65988eac2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 12 deletions

View File

@ -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<ReconnectOpts> {
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;
}

View File

@ -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);
});