Многопользовательские Live-обновления
В этой статье описывается настройка серверной поддержки функции реального времени (Live Updates) в DHTMLX Scheduler.
Эта статья посвящена реализации режима Live Updates для DHTMLX Scheduler v7.2. Информацию о более ранних версиях смотрите здесь.
Принцип работы
DHTMLX Scheduler включает вспомогательный модуль RemoteEvents, который позволяет мгновенно синхронизировать изменения между несколькими пользователями.
Основная схема работы
- Клиент
RemoteEventsоткрывает WebSocket-соединение сразу после инициализации Scheduler. - Действия пользователя, такие как создание, редактирование или удаление событий, отправляются на сервер через
DataProcessorс использованием REST API. - После обработки этих действий сервер рассылает обновления всем подключённым клиентам через WebSocket.
- Клиент
RemoteEventsполучает эти обновления и применяет их к Scheduler, обеспечивая, чтобы все пользователи видели одинаковые данные.
Такая схема поддерживает работу с несколькими виджетами DHTMLX (например, Kanban, Gantt, Scheduler) в одном приложении, используя общий формат, который упрощает синхронизацию и не требует отдельного бэкенда для каждого виджета.
Интеграция на фронтенде
Настройте RemoteEvents и DataProcessor вместе в той части кода, где загружаются данные Scheduler.
const AUTH_TOKEN = "token";
scheduler.init('scheduler_here', new Date(2025, 3, 20), "week");
scheduler.load("/events");
const dp = scheduler.createDataProcessor({
url: "/events",
mode: "REST-JSON",
headers: {
"Remote-Token": AUTH_TOKEN
}
});
const { RemoteEvents, remoteUpdates } = scheduler.ext.liveUpdates;
const remoteEvents = new RemoteEvents("/api/v1", AUTH_TOKEN);
remoteEvents.on(remoteUpdates);
Важные детали
- Конструктор
RemoteEventsтребует токен авторизации, который отправляется в заголовке "Remote-Token" для проверки на сервере. - Первый аргумент - это endpoint для
WebSocket(например, /api/v1). - Вспомогательный модуль
remoteUpdatesобрабатывает входящие сообщения поWebSocketи поддерживает синхронизацию данных Scheduler.
Реализация на сервере
В этом разделе описано, как создать сервер, поддерживающий live-обновления.
Упрощённый пример
Чтобы попробовать:
- Скачайте и запустите backend-проект с помощью
npm installиnpm run start. - Откройте пример frontend в двух вкладках браузера.
- Отредактируйте событие в одной вкладке и увидьте изменения в другой.