ChatQueue
src/main/senders/chat-queue.ts
Per-анкета. Управляє чергою відправки повідомлень через сокет. Гарантує затримку між повідомленнями і відстежує відповіді сервера.
Два типи запитів
| Тип | Використовується | Особливість |
|---|---|---|
sendLimitedMessage | ChatSender (автоінвайти) | Черга — один запит одночасно, затримка 5.5с |
sendUnlimitedRequest | Оператор вручну, ActiveChat | Без черги, але тільки один одночасно |
isReady()
ChatSender перевіряє chatQueue.isReady() перед відправкою. false якщо:
- З моменту останнього запиту < 5.5 секунди
- Є активний
limitedRequest - Черга
isWaiting - Є
isReserved(зарезервовано оператором, але < 2 хв)
Очікування відповіді
Після надсилання чекає підтвердження через socket:
confirmFromClient→ одразу resolveconfirmFromServer→ resolve через ще 1 секундуlimit/limitSecond/offlineUser→ reject (помилка)- Таймаут 10 секунд → reject (
"Golden is not responding")
Watchdog
Раз на хвилину перевіряє: якщо ChatSender не відправляв > 6 хвилин → логує помилку на сервер.