Грамотное завершение
Грамотное завершение или выключение — это функция, которая при получении сигнала о завершении программы завершает свою последнюю задачу до полной остановки. Это позволяет гарантировать полное отключение клиента и сохранение всех сессий и кэша в базе данных. . Поэтому необходимо установить функцию shutdown
.
import { shutdown } from 'tgsnake';
shutdown(client);
С помощью этой функции вы можете установить более 1 клиента.
shutdown(client1, client2, client3);
В v2 эта функция интегрирована непосредственно в класс Snake и ее нельзя отключить, что приведет к значительному расходу ресурсов (утечка памяти), поскольку у каждого клиента есть собственный обработчик событий для сигналов SIGTERM
и SIGINT
.
{
experimental: {
shutdown: false; // Чтобы отключить встроенный обработчик событий
}
}
Если вы не установите эту функцию для клиента, могут произойти следующие проблемы:
- Кэш не будет обновляться в базе данных сессии, которую вы используете, например, если вы используете
@tgsnake/redis-session
. - Сеанс вашей авторизации может не быть сохранен в базе данных сессии, которую вы используете, например, если вы используете
@tgsnake/redis-session
. - Соединение с сервером Telegram не будет полностью закрыто. Это может привести к блокировке вашего аккаунта Telegram.
Вы можете создать собственную функцию завершения, добавив обработчик событий для сигналов SIGTERM или SIGINT, а затем вызвать функцию stop
в клиенте.