From 24aa108d700a6cb5eefd2899eae2dfb1d965ef3d Mon Sep 17 00:00:00 2001 From: Manuel Astudillo Date: Sat, 11 May 2019 12:34:47 +0200 Subject: [PATCH] fix: do not reconnect on errors to avoid double connections --- lib/ws-autoreconnect.ts | 9 ++++++--- lib/ws-errors.enum.ts | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 lib/ws-errors.enum.ts diff --git a/lib/ws-autoreconnect.ts b/lib/ws-autoreconnect.ts index 6473140..66641d0 100644 --- a/lib/ws-autoreconnect.ts +++ b/lib/ws-autoreconnect.ts @@ -1,5 +1,6 @@ import * as WebSocket from "ws"; import chalk from "chalk"; +import { WebsocketError } from "./ws-errors.enum"; const HEARTBEAT_INTERVAL = 15000; @@ -32,9 +33,12 @@ export class WebSocketClient { clearTimeout(this.pingTimeout); switch (codeOrError) { - case 1000: // CLOSE_NORMAL - console.log(chalk.yellow("WebSocket:") + chalk.blue(" closed")); + case WebsocketError.NormalClosure: + console.log( + chalk.yellow("WebSocket:") + chalk.blue("normally closed") + ); break; + case 4000: console.log( chalk.yellow("WebSocket:") + chalk.red(" Invalid authentication") @@ -50,7 +54,6 @@ export class WebSocketClient { this.instance.on("error", (err: any) => { switch (err["code"]) { case "ECONNREFUSED": - this.reconnect(err); break; default: this.onerror(err); diff --git a/lib/ws-errors.enum.ts b/lib/ws-errors.enum.ts new file mode 100644 index 0000000..e32c3c5 --- /dev/null +++ b/lib/ws-errors.enum.ts @@ -0,0 +1,16 @@ +export enum WebsocketError { + NormalClosure = 1000, + GoingAway = 1001, + UnsupportedData = 1003, + NoStatusDefined = 1005, + AbnormalClosure = 1006, + InvalidFramePayloadData = 1007, + PolicyViolation = 1008, + MessageTooBig = 1009, + MissingExtension = 1010, + InternalError = 1011, + ServiceRestart = 1012, + TryAgainLater = 1013, + BadGateway = 1014, + TLSHandshake = 1015 +}