Мгновенные уведомления в админке: Reverb вместо polling
Как колокольчик Filament начал получать новые заявки и события CRM через WebSocket, не опрашивая базу данных по таймеру.
Уведомление должно приходить тогда, когда оно появилось
Колокольчик в админке уже собирал важные рабочие события: новую заявку с сайта, импортированную CRM-задачу и новый комментарий. Но раньше интерфейс узнавал о них периодическим запросом к базе. Это простой стартовый вариант, однако у него есть два неприятных свойства: событие приходит с задержкой, а одинаковые запросы выполняются даже в спокойные периоды.
В этой итерации уведомления получили событийную доставку через Laravel Reverb. Открытая вкладка администратора обновляется сразу после создания записи, без фонового polling.
База остаётся источником правды
Reverb не заменяет таблицу уведомлений и не превращает WebSocket в отдельное хранилище. Сначала сервис сохраняет обычное database-уведомление в рамках транзакции. Затем Filament отправляет штатное событие только в приватный канал конкретного пользователя.
Такой порядок важен на практике: если вкладка была закрыта или соединение временно пропало, событие всё равно лежит в базе и будет показано при следующем открытии панели. WebSocket нужен для скорости интерфейса, а не для риска потерять рабочий сигнал.
Без лишней нагрузки в спокойное время
После подключения Reverb периодический опрос отключён. Когда новых заявок и комментариев нет, админка не будит базу каждые несколько секунд только ради проверки колокольчика. Когда событие появляется, открытые сессии получают его адресно через приватный канал.
Это особенно полезно для панели, где важна оперативность, но количество активных администраторов обычно невелико. Вместо постоянного фонового трафика остаётся один понятный путь доставки по факту события.
Конфигурация отделяет публичное от секретного
Для Reverb добавлены отдельные настройки сервера, broadcasting и разрешённых origin. Секрет приложения остаётся на сервере, а браузеру передаются только публичные параметры подключения. В production Reverb работает отдельным процессом за Nginx, поэтому его жизненный цикл не смешивается с PHP-FPM.
В deploy добавлен перезапуск Reverb после обновления кода и конфигурации. Это не заменяет Supervisor или systemd, но гарантирует, что уже запущенный процесс подхватит новую версию приложения.
Практический результат
Операционные уведомления в админке стали быстрее и экономнее. Новая заявка или CRM-событие появляется в открытой вкладке сразу, а база не получает регулярные запросы в ожидании того, что когда-нибудь произойдёт изменение. При этом история уведомлений остаётся надёжно сохранённой в привычной таблице.