StackSocket

Stack Socket

src/main/socket/stack.socket.ts · src/main/socket/socket-message.handler.ts

WebSocket з’єднання між Electron-додатком і Stack-сервером. Встановлюється одразу після логіну.


Команди від сервера

ПодіяДія
GET_LOGНадсилає лог-файл на сервер
RESTARTapp.quit() — закриває застосунок
UPDATE_SENDER_TYPEОновлює lady.findNew для TU
DROP_LADYВидаляє TU з ранера (через чергу)
SET_LADYДодає TU до ранера (через чергу)
SUPERVISOR_CONNECTEDНадсилає повний стан застосунку супервайзеру
SUPERVISOR_DISCONNECTEDПрибирає флаг супервайзера

Черга подій (DROP/SET LADY)

DROP_LADY і SET_LADY виконуються послідовно через чергу — щоб не виникали конфлікти при одночасній зміні TU.

Черга чекає на isSuccessInitialized = true (максимум 5 хвилин). Якщо ініціалізація не завершилась — кидає помилку.


SUPERVISOR_CONNECTED / DISCONNECTED

SUPERVISOR_CONNECTED — виставляє supervisorConnected = true на сокеті і викликає SupervisorStreamService sendInitialSnapshot({ ladies, favorites, tasks, streams }). Той шле один UPDATE_APP_STATE з повним стартовим payload-ом.

SUPERVISOR_DISCONNECTEDsupervisorConnected = false + onSupervisorDisconnected() (скидає buffer і favoritesSnapshot).

Після старту всі подальші зміни в стані оператора (TU, favorite, task, чат/маїл/email активність, стан камер) ідуть тімліду через SupervisorStreamService як часткові патчі (AppStatePatch) — окремий event APP_STATE більше не використовується, все летить через UPDATE_APP_STATE.


Реконект

При втраті з’єднання — автоматичний реконект. Після реконекту: syncLadiesOnReconnect() — порівнює список TU і синхронізує:

  • TU яких немає → DROP_LADY в чергу
  • Нові TU → SET_LADY в чергу
  • Фільтрує тільки status = AVAILABLE