mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
reconnector extract type.
This commit is contained in:
parent
2c70093d77
commit
27ca2e0719
5
src/component/types/reconnecter.ts
Normal file
5
src/component/types/reconnecter.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export interface ReconnecterConfig {
|
||||||
|
maxReconnects: number
|
||||||
|
timeoutMs: number
|
||||||
|
backoffMs: number
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
import EventEmitter from 'eventemitter3'
|
import EventEmitter from 'eventemitter3'
|
||||||
|
import { ReconnecterConfig } from '../types/reconnecter'
|
||||||
|
|
||||||
export interface ReconnecterAbstractEvents {
|
export interface ReconnecterAbstractEvents {
|
||||||
connect: () => void
|
connect: () => void
|
||||||
@ -30,12 +31,6 @@ export interface ReconnecterEvents {
|
|||||||
close: (error?: Error) => void
|
close: (error?: Error) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ReconnecterConfig {
|
|
||||||
max_reconnects: number
|
|
||||||
timeout_ms: number
|
|
||||||
backoff_ms: number
|
|
||||||
}
|
|
||||||
|
|
||||||
export class Reconnecter extends EventEmitter<ReconnecterEvents> {
|
export class Reconnecter extends EventEmitter<ReconnecterEvents> {
|
||||||
private _conn: ReconnecterAbstract
|
private _conn: ReconnecterAbstract
|
||||||
private _config: ReconnecterConfig
|
private _config: ReconnecterConfig
|
||||||
@ -51,9 +46,9 @@ export class Reconnecter extends EventEmitter<ReconnecterEvents> {
|
|||||||
|
|
||||||
this._conn = conn
|
this._conn = conn
|
||||||
this._config = {
|
this._config = {
|
||||||
max_reconnects: 10,
|
maxReconnects: 10,
|
||||||
timeout_ms: 1500,
|
timeoutMs: 1500,
|
||||||
backoff_ms: 750,
|
backoffMs: 750,
|
||||||
...config,
|
...config,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +109,7 @@ export class Reconnecter extends EventEmitter<ReconnecterEvents> {
|
|||||||
public set config(conf: ReconnecterConfig) {
|
public set config(conf: ReconnecterConfig) {
|
||||||
this._config = { ...conf }
|
this._config = { ...conf }
|
||||||
|
|
||||||
if (this._config.max_reconnects > this._total_reconnects) {
|
if (this._config.maxReconnects > this._total_reconnects) {
|
||||||
this.close(new Error('reconnection config changed'))
|
this.close(new Error('reconnection config changed'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -148,7 +143,7 @@ export class Reconnecter extends EventEmitter<ReconnecterEvents> {
|
|||||||
|
|
||||||
public connect(): void {
|
public connect(): void {
|
||||||
this._conn.connect()
|
this._conn.connect()
|
||||||
this._timeout = window.setTimeout(this.onDisconnect.bind(this), this._config.timeout_ms)
|
this._timeout = window.setTimeout(this.onDisconnect.bind(this), this._config.timeoutMs)
|
||||||
}
|
}
|
||||||
|
|
||||||
public reconnect(): void {
|
public reconnect(): void {
|
||||||
@ -158,8 +153,8 @@ export class Reconnecter extends EventEmitter<ReconnecterEvents> {
|
|||||||
|
|
||||||
this._total_reconnects++
|
this._total_reconnects++
|
||||||
|
|
||||||
if (this._config.max_reconnects > this._total_reconnects || this._total_reconnects < 0) {
|
if (this._config.maxReconnects > this._total_reconnects || this._total_reconnects < 0) {
|
||||||
setTimeout(this.connect.bind(this), this._config.backoff_ms)
|
setTimeout(this.connect.bind(this), this._config.backoffMs)
|
||||||
} else {
|
} else {
|
||||||
this.close(new Error('reconnection failed'))
|
this.close(new Error('reconnection failed'))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user