5: 示例应用程序
phlo-demo-poll 仓库是实时展示:来自 tutorial 的投票,内置 Phlo Realtime。一个仓库同时包含普通的 async 投票和实时版本,因此您可以清楚地看到 Phlo Realtime 添加了什么。
5.1: 从 async poll 到实时
Poll 教程构建了一个使用普通 async 表单的投票,能够在不重新加载页面的情况下更新。最后一步交给了 Phlo Realtime:同一投票现在也会广播,因此每个打开的标签页都会同时更新,并且在线徽章显示有多少人正在观看。
重要的属性是,投票仍然可以在 没有 实时步骤的情况下工作。广播只是一个受保护的 cast(...) 行;停止实时服务后,你将回到单标签页的 async 投票。这就是整个示例集遵循的逐步可用性原则。
5.2: 阅读什么
app.ws.phlo: 所有四个钩子,受保护的cast、存在性和事件日志。poll.phlo: 投票路由为教程的版本添加一个cast(...)和一个在线徽章。monitor.phlo: 实时套接字监视器。
5.3: 自己运行它
克隆仓库,将主机指向 www/,并启动 Phlo Daemon 和 Phlo Realtime。第一次请求会转译源代码;如果没有实时服务,应用将退化为普通的 async poll。README 文档记录了这两种模式,因此您可以从源代码复制每个步骤。