function ws_connect() { const session_id = ls.getItem('sessionId') || '0'; const desk_id = storage.desk_id; ws = new WebSocket(`${config.ws_url}?deskId=${desk_id}&sessionId=${session_id}`); ws.addEventListener('open', on_open); ws.addEventListener('message', on_message); ws.addEventListener('error', on_error); ws.addEventListener('close', on_close); } function on_open() { clearTimeout(storage.timers.ws_reconnect); console.debug('open') } async function on_message(event) { const data = event.data; const message_data = await data.arrayBuffer(); const view = new DataView(message_data); const d = deserializer_create(message_data, view); await handle_message(d); } function on_close() { ws = null; console.debug('close'); storage.timers.ws_reconnect = setTimeout(ws_connect, config.ws_reconnect_timeout); } function on_error() { ws.close(); }