本文介绍的是 DHTMLX Scheduler 实时更新模式的旧版。如需了解最新版本的信息,请参阅这里。
实时更新模式可让数据在用户之间实时同步。
当某个用户做出更改时,其他所有用户会立刻看到这些更改。
该模式使用 Faye
socket 库,以确保无需刷新页面即可实现快速且灵活的更新(仅相关组件会更新)。
本文将为你提供一份简单的入门指南,帮助你快速上手此功能。
实时更新通过将一个已连接客户端的更改广播给所有其他客户端来实现。这依赖于 WebSocket 连接,允许客户端与后端之间进行双向通信。
在此版本中,实时更新模块扩展了 DataProcessor
模块,使用 Faye
客户端库,并结合用于在客户端之间分发消息的后端应用。
整体架构包含三个部分:
DataProcessor
模块的前端。当用户更新数据时:
要完成本教程,你需要一个已集成服务端逻辑的 dhtmlxScheduler 应用,该应用能从数据库加载数据并保存更改。(详细信息见这里。)
一个简单示例如下:
<script>
function init() {
scheduler.init('scheduler_here', new Date(2025,5,24), "week");
scheduler.load("api/scheduler");
const dp = scheduler.createDataProcessor({
url: "/events",
mode: "REST"
});
}
</script>
本实时更新实现已废弃,不再包含于主包中。
要启用实时更新模式,需要在前端应用中添加两个额外文件:
<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>
调用 DataProcessor
实例的 live_updates() 方法以激活实时更新模式。请确保已先初始化 DataProcessor
。该方法参数为 WebSocket 入口地址。
const dp = scheduler.createDataProcessor({
url: "/events",
mode: "REST"
});
dp.live_updates("/liveUpdates");
你可以在这里下载完整演示应用。
返回顶部