service chat

ChatQueue

ChatQueue

src/main/senders/chat-queue.ts

Per-анкета. Управляє чергою відправки повідомлень через сокет. Гарантує затримку між повідомленнями і відстежує відповіді сервера.


Два типи запитів

ТипВикористовуєтьсяОсобливість
sendLimitedMessageChatSender (автоінвайти)Черга — один запит одночасно, затримка 5.5с
sendUnlimitedRequestОператор вручну, ActiveChatБез черги, але тільки один одночасно

isReady()

ChatSender перевіряє chatQueue.isReady() перед відправкою. false якщо:

  • З моменту останнього запиту < 5.5 секунди
  • Є активний limitedRequest
  • Черга isWaiting
  • Є isReserved (зарезервовано оператором, але < 2 хв)

Очікування відповіді

Після надсилання чекає підтвердження через socket:

  • confirmFromClient → одразу resolve
  • confirmFromServer → resolve через ще 1 секунду
  • limit / limitSecond / offlineUser → reject (помилка)
  • Таймаут 10 секунд → reject ("Golden is not responding")

Watchdog

Раз на хвилину перевіряє: якщо ChatSender не відправляв > 6 хвилин → логує помилку на сервер.