Как связать подключение WebSocket как значение объекта

В общий объект obj записываются данные из сокета.

Подскажите как по кнопке закрыть соединение и очистить данные по id в объекте?

Не могу разобраться как его закрывать, так как открытие идет в локальную переменную let ws, его можно как то через глобальную связать например в тот же obj?

let obj = {};

function connect(id) {
  let ws;
  if (id == '1') {
    ws = new WebSocket("wss://localhost/api/ws")
    ws.onopen = function() {
      console.log("Connected...");
    };
    ws.onmessage = function(data) {
      obj[id] = data;
    }
    ws.onclose = function() {
      obj[id] = {};
      console.log("Disconnected");
    }
  }
  if (id == '2') {
    ws = new WebSocket("wss://localhost/api2/ws"); // v2
    ws.onopen = function() {
      console.log("Connected...");
    };
    ws.onmessage = function(data) {
      obj[id] = data;
    }
    ws.onclose = function() {
      obj[id] = {};
      console.log("Disconnected");
    }
  }
}

$(document).on('click', '.connect', function() {
  let id = $(this).data('id');
  $(this).html('Подключено '+ id);
  connect(id);
});

$(document).on('click', '.disconnect', function() {
  let id = $(this).data('id');
  $(this).html('Отключено '+ id);
  /// ... 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="connect" data-id="1">Connect 1</button>
<button class="disconnect" data-id="1">Disconnect 1</button>
<hr>
<button class="connect" data-id="2">Connect 2</button>
<button class="disconnect" data-id="2">Disconnect 2</button>


Ответы (0 шт):