Обновления в реальном времени¶
Если установлен плагин Sync, форум обновляется без перезагрузки страницы. Без него всё превращается в обычный форум с серверным рендерингом и без живой разметки — вполне нормальный опыт, который видят и поисковые системы.
realtime:
enabled: true # не действует без плагина sync
new_replies_threshold: 5 # при большем числе непросмотренных ответов показывать кнопку загрузки
presence:
enabled: true
heartbeat_seconds: 15
Что обновляется в реальном времени¶
- Новые ответы появляются на месте внутри темы
- Счётчики реакций меняются, когда участники реагируют
- Списки категорий показывают панель обновления при появлении новых тем
- Счётчики колокольчика уведомлений и конверта сообщений обновляются
- Всплывающие уведомления выезжают при ответах, упоминаниях и личных сообщениях
new_replies_threshold — это проявление вежливости: ниже порога ответы вставляются сразу, а выше появляется кнопка загрузки, чтобы быстро движущаяся ветка не вырывала страницу из-под читателя посреди предложения.
Присутствие и индикаторы набора текста¶
На страницах тем видно, кто просматривает и кто печатает. Клиенты отправляют сигнал каждые heartbeat_seconds; увеличьте значение, чтобы снизить нагрузку на большом форуме, или уменьшите его для более отзывчивого ощущения на маленьком.
Каналы с учётом прав¶
Живые каналы соблюдают права на категории. Приватная категория никогда не вещает посторонним: пользователь без права чтения не подписан на её канал и не получает её события. Права проверяются на сервере при подписке, а не фильтрацией на клиенте.
Транспорты¶
Forum Pro выбирает лучший доступный транспорт в таком порядке:
1. Push-уведомления Mercure¶
С плагином Sync Mercure обновления приходят через события, отправляемые сервером, из хаба Mercure. Это вариант с низкой задержкой, который стоит использовать на загруженном форуме. Sync Mercure включает бинарник хаба:
2. Опрос сервера¶
Без push-хаба клиенты автоматически переходят на опрос сервера. Настраивать ничего не нужно, и функциональность не теряется. Задержка составляет несколько секунд вместо мгновенной.
3. Без обновлений в реальном времени¶
Без плагина sync параметр realtime не действует. Страницы отрисовываются на сервере и остаются такими до перезагрузки читателем.
Admin → Forum → Status показывает, какой транспорт используется на самом деле, — это самый быстрый способ убедиться, что хаб Mercure доступен.
Навигация внутри страницы¶
При переходе между страницами форума заменяется только область контента, а не загружается вся страница. Реализация учитывает то, что обычно ломается при частичной навигации:
- Кнопки «назад» и «вперёд» работают
- Заголовки страниц обновляются в соответствии с новым представлением
- Фокус перемещается на новый контент, поэтому скринридеры сообщают, куда вы попали
- Обновления в реальном времени и колокольчик корректно переподключаются после каждой навигации
Если ваша тема уже использует htmx, Forum Pro автоматически отказывается от своей копии, а не загружает вторую и не конфликтует из-за одних и тех же атрибутов.
Установите htmx: false для классической полной загрузки страниц. Всё продолжит работать, просто навигация станет менее плавной.
Устранение неполадок¶
| Симптом | Что проверить |
|---|---|
| Ничего не обновляется в реальном времени | Установлен и включён ли sync? Это показывает вкладка Status. |
Транспорт указан как polling, хотя Mercure установлен |
Работает ли хаб и доступен ли он? bin/plugin sync-mercure start. |
| Обновления работают, присутствие — нет | realtime.presence.enabled |
| Обновления перестают работать после навигации | Обычно тема подключает собственный htmx так, что Forum Pro не может это обнаружить. Установите frontend.htmx: false и проверьте. |