多用户实时更新
本文介绍如何为 DHTMLX Gantt 的实时更新模块实现服务器端支持。
原理
DHTMLX Gantt 提供了 RemoteEvents 助手,用于在多人之间实现实时同步。
关键工作流
- 当 Gantt 初始化时,
RemoteEvents客户端会打开一个 WebSocket 连接。 - 用户的变更(即 "create"、"edit" 或 "delete" 事件)通过
DataProcessor使用 REST API 发送到服务器。 - 服务器在处理完变更后,通过 WebSocket 将更新广播给所有已连接的客户端。
RemoteEvents客户端接收这些更新并将其应用到 Gantt,以确保跨用户 的同步。
该设计使该后端模块能够在同一个应用中支持多个 DHTMLX 小部件(例如 Kanban、Gantt、Scheduler)。共享的格式简化了数据同步,而无需为每个小部件设置独立的后端。
前端集成
在加载 Gantt 数据的同一段代码中初始化 RemoteEvents 并设置 DataProcessor。
const AUTH_TOKEN = "token";
gantt.init("gantt_here");
gantt.parse("/data");
const dp = gantt.createDataProcessor({
url: "/data",
mode: "REST-JSON",
headers: {
"Remote-Token": AUTH_TOKEN,
},
});
const { RemoteEvents, remoteUpdates } = gantt.ext.liveUpdates;
const remoteEvents = new RemoteEvents("/api/v1", AUTH_TOKEN);
remoteEvents.on(remoteUpdates);