Как связать подключение 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>