Live Updates Mode (Устаревший)
Описанная функциональность устарела и больше не поддерживается.
Эта статья относится к устаревшей реализации режима Live Updates для DHTMLX Scheduler. Более подробную информацию о текущей версии смотрите здесь.
Live Updates — это режим, который обеспечивает синхронные обновления данных в реальном врем ени.
Когда один пользователь вносит изменение, оно становится видимым для всех остальных немедленно.
Этот режим использует сокет-библиотеку Faye для максимальной скорости и гибкости процесса и не требует обновления страницы (он обновляет только тот компонент, к которому применяется).
В этой статье мы предлагаем пошаговое руководство, чтобы быстро погрузиться в тему.
Основной принцип
Живые обновления достигаются путем трансляции изменений, внесённых одним подключённым клиентом, всем остальным подключённым клиентам. Это достигается с помощью WebSocket-соединения для двустороннего обмена сообщениями между подключёнными клиентами и бэкендом.
В этой версии модуля Live Updates реализована через расширение модуля DataProcessor с использованием клиента библиотеки Faye, а также дополнительного backend-приложения, которое маршрутизирует сообщения между клиентами.
Решение состоит из трёх частей:
- фронтенд с Scheduler и модулем
DataProcessor. - бэкенд, который реализует CRUD-операции в постоянном хранилище.
- hub живых обновлений, который отвечает за подключение клиентов.
Когда пользователь вносит изменения в данные:
- фронтенд отправляет обновление в бэкенд.
- Одновременно фронтенд отправляет те же обновления в hub живых обновлений.
- Hub живых обновлений транслирует обновление всем подключённым клиентам.
- Когда фронтенд получает обновление от hub живых обновлений, он применяет его к данным Scheduler таким образом, чтобы не вызывать изменений в CRUD-бэкенде.
Прежде чем начать
Чтобы начать этот туториал, у вас должно быть полнофункциональное приложение dhtmlxScheduler, интегрированное с серверной логикой — такое, которое загружает данные из базы данных и сохраняет изменения обратно. (См. п одробности здесь.)
Базовый пример такого приложения может выглядеть примерно так:
<script>
function init() {
scheduler.init('scheduler_here', new Date(2027,5,24), "week");
scheduler.load("api/scheduler");
const dp = scheduler.createDataProcessor({
url: "/events",
mode: "REST"
});
}
</script>
Конфигурация Live Updates
Эта реализация Live Updates устарела и не входит в основной пакет.
Шаг 1. Настройка
- Скачать плагин Live Updates для Scheduler: download link
- Скачать приложение Live Updates backend: download link
- Запустите приложение Live Updates backend, следуя инструкциям во вложенном readme файле.
Шаг 2. Настройка фронтенда
Чтобы работать с режимом Live Updates, подключите два дополнительных файла во фронтенд-приложение:
- live_updates.js - файл, загруженный на предыдущем шаге
- client.js - файл, который динамически генерируется WebSocket-бэкендом
<script src="./lib/dhtmlxscheduler/live_updates.js"></script>
<script src="http://localhost:8008/client.js"></script>
В приведённом выше примере мы подключаемся напрямую к WebSocket-приложению. Обычно вы захотите маршрутизировать этот URL через ваше основное приложение, чтобы не раскрывать адрес и порт второго приложения. Это можно сделать с помощью обратного прокси.
Проксирование запросов через основное приложение (Node.js):
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer({});
module.exports = function(app){
app.all("/liveUpdates*", function(req, res) {
proxy.web(req, res, {target: "http://localhost:8008"});
});
}
Фронтенд:
<script src="./lib/dhtmlxscheduler/live_updates.js"></script>
<script src="/liveUpdates/client.js"></script>
Шаг 3. Включение Live Updates
Режим включается вызовом метода live_updates() у экземпляра DataProcessor. Чтобы это работало, сначала необходимо инициализировать DataProcessor. В качестве параметра метод принимает URL точки входа WebSocket.
const dp = scheduler.createDataProcessor({
url: "/events",
mode: "REST"
});
dp.live_updates("/liveUpdates");
Вы можете скачать полное демонстрационное приложение здесь.