跳转到主要内容

工作原理

具有实时同步功能的应用在设备上保持本地数据库。读取是即时的(本地),写入在本地排队,所有内容在后台同步到服务器。
用户写入 -> 本地数据库 -> 上传队列 -> 服务器 -> Postgres
                                                    |
用户读取  <- 本地数据库 <- 同步复制 <---------+
结果:即时读取、无加载动画,以及在弱网或离线状态下仍能正常工作的应用。

AI 设置的内容

要求 AI 构建实时应用。它会重用现有的合适活跃数据库;否则会创建数据库、启用同步服务,并构建一个两部分应用:
  • UI - 客户端应用,包含本地数据库、实时查询和同步连接器
  • Process - 令牌端点、同步上传路由和迁移运行器
凭证存储在保险库中。AI 使用 db 工具将数据库环境变量连接到流程组件。 应用被认为就绪前,数据库必须显示 sync: ready。如果同步未就绪,应用可能会渲染,但跨设备实时数据将无法工作。

经验法则

  • 先在本地写入。让同步在后台上传。
  • 本地数据存在后,显示空状态而非加载动画。
  • 将用户可见的状态保存在同步表中,以便在刷新和离线使用时保留。
  • 将相关的本地写入分组,使 UI 一步更新。
  • 在完成实时应用前验证同步健康状态。

离线应用壳

UI 模板可以包含离线应用壳,使应用在首次访问后无需网络即可重新打开。应用壳是静态 HTML、JS、CSS 和图标。
  • 离线壳 使应用无需网络即可打开
  • 同步 使应用数据在离线时保持可用
结合使用:应用无需网络即可打开,显示最新同步数据,排队新写入,并在连接恢复时同步。

何时使用实时同步

适合过度设计
任务管理器和笔记应用静态营销页面
协作工具一次性表单提交
弱网连接的现场应用只读宣传册网站
任何应该感觉即时的应用无离线价值的应用

平台变量

Kazzle 自动向每个应用流程注入一小组环境变量。这些与你自己的保险库密钥分开。
变量说明
PORT流程应监听的端口
HOST要绑定的主机名(通常为 0.0.0.0
KAZZLE_API_URLKazzle 运行时助手使用的基础 URL
KAZZLE_APP_COMPONENT_<NAME>_URL同级组件的运行时 URL

同级 URL

当应用有多个组件(例如 web UI 和 server 流程)时,Kazzle 可以注入同级组件的 URL:
# 在"web"部分:
KAZZLE_APP_COMPONENT_SERVER_URL=http://localhost:3001

# 在"server"部分:
KAZZLE_APP_COMPONENT_WEB_URL=http://localhost:3000
当同级已部署时,注入的值指向该已部署组件。否则它指向该同级的当前开发地址。