ionic3 net::ERR_CONNECTION_REFUSED の発生原因と対処法

ionic serveで起動すると、下記のJavaScriptエラーが発生して手詰まりになるケースが発生。

WebSocket connection to 'ws://localhost:53703/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

さらにソースコードを手直しして再読み込みすると、コンソール上に以下のようなエラーが出てます。

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET

調べてみると、wsというモジュールのバージョンにより発生するものらしい。
wsはNode.jsのWebSocket通信モジュール。

【調査手順】
1.package-lock.jsonを開く
2.「”ws”」で検索
 以下の設定が書かれている箇所がヒットする。

    "ws": {
      "version": "3.3.3",
      "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
      "integrity": "sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==",
      "requires": {
        "async-limiter": "1.0.0",
        "safe-buffer": "5.1.2",
        "ultron": "1.1.1"
      }
    },

3.以下のコマンドで、wsのバージョンを3.3.3→3.3.2に変更する。
 npm install ws@3.3.2
 
4.変更後のpackage-lock.jsonを開きバージョンを確認

    "ws": {
      "version": "3.3.2",
      "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.2.tgz",
      "integrity": "sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==",
      "requires": {
        "async-limiter": "1.0.0",
        "safe-buffer": "5.1.2",
        "ultron": "1.1.1"
      }
    },