Перейти к содержанию

Обновления в реальном времени

Если установлен плагин Sync, форум обновляется без перезагрузки страницы. Без него всё превращается в обычный форум с серверным рендерингом и без живой разметки — вполне нормальный опыт, который видят и поисковые системы.

realtime:
  enabled: true                # не действует без плагина sync
  new_replies_threshold: 5     # при большем числе непросмотренных ответов показывать кнопку загрузки
  presence:
    enabled: true
    heartbeat_seconds: 15

Что обновляется в реальном времени

  • Новые ответы появляются на месте внутри темы
  • Счётчики реакций меняются, когда участники реагируют
  • Списки категорий показывают панель обновления при появлении новых тем
  • Счётчики колокольчика уведомлений и конверта сообщений обновляются
  • Всплывающие уведомления выезжают при ответах, упоминаниях и личных сообщениях

new_replies_threshold — это проявление вежливости: ниже порога ответы вставляются сразу, а выше появляется кнопка загрузки, чтобы быстро движущаяся ветка не вырывала страницу из-под читателя посреди предложения.

Присутствие и индикаторы набора текста

realtime:
  presence:
    enabled: true
    heartbeat_seconds: 15

На страницах тем видно, кто просматривает и кто печатает. Клиенты отправляют сигнал каждые heartbeat_seconds; увеличьте значение, чтобы снизить нагрузку на большом форуме, или уменьшите его для более отзывчивого ощущения на маленьком.

Каналы с учётом прав

Живые каналы соблюдают права на категории. Приватная категория никогда не вещает посторонним: пользователь без права чтения не подписан на её канал и не получает её события. Права проверяются на сервере при подписке, а не фильтрацией на клиенте.

Транспорты

Forum Pro выбирает лучший доступный транспорт в таком порядке:

1. Push-уведомления Mercure

С плагином Sync Mercure обновления приходят через события, отправляемые сервером, из хаба Mercure. Это вариант с низкой задержкой, который стоит использовать на загруженном форуме. Sync Mercure включает бинарник хаба:

bin/plugin sync-mercure install
bin/plugin sync-mercure start

2. Опрос сервера

Без push-хаба клиенты автоматически переходят на опрос сервера. Настраивать ничего не нужно, и функциональность не теряется. Задержка составляет несколько секунд вместо мгновенной.

3. Без обновлений в реальном времени

Без плагина sync параметр realtime не действует. Страницы отрисовываются на сервере и остаются такими до перезагрузки читателем.

Admin → Forum → Status показывает, какой транспорт используется на самом деле, — это самый быстрый способ убедиться, что хаб Mercure доступен.

Навигация внутри страницы

frontend:
  htmx: true

При переходе между страницами форума заменяется только область контента, а не загружается вся страница. Реализация учитывает то, что обычно ломается при частичной навигации:

  • Кнопки «назад» и «вперёд» работают
  • Заголовки страниц обновляются в соответствии с новым представлением
  • Фокус перемещается на новый контент, поэтому скринридеры сообщают, куда вы попали
  • Обновления в реальном времени и колокольчик корректно переподключаются после каждой навигации

Если ваша тема уже использует htmx, Forum Pro автоматически отказывается от своей копии, а не загружает вторую и не конфликтует из-за одних и тех же атрибутов.

Установите htmx: false для классической полной загрузки страниц. Всё продолжит работать, просто навигация станет менее плавной.

Устранение неполадок

Симптом Что проверить
Ничего не обновляется в реальном времени Установлен и включён ли sync? Это показывает вкладка Status.
Транспорт указан как polling, хотя Mercure установлен Работает ли хаб и доступен ли он? bin/plugin sync-mercure start.
Обновления работают, присутствие — нет realtime.presence.enabled
Обновления перестают работать после навигации Обычно тема подключает собственный htmx так, что Forum Pro не может это обнаружить. Установите frontend.htmx: false и проверьте.