跳到主要内容

客户端内部

客户端内部

$bolt 背后的浏览器客户端小巧且擦除了名称:页面导入的带类型的 bolt 在运行时就是同一个对象,所有类型都在构建时来自名称索引。

查询

读取会构建一个尚未执行的查询。await 发送一次 POST /__bolt/q;bolt.live 以查询的规范形式为键,在标签页的流上注册视图,并在有内容渲染它时保持注册,另有 30 秒宽限期。

流

每个可见标签页打开一个 EventSource。视图收到的第一帧是它的结果,之后的帧按流的顺序对其打补丁。序号不高于视图当前序号的补丁会被忽略,无法套用的补丁会让视图重新注册,由新的结果重新同步。标签页隐藏 30 秒后会关闭其流。

写入

act 发送一次带有客户端生成的幂等键的 POST /__bolt/act,从不抛出拒绝。生成的写入会乐观地绘制在它影响的实时读取上:客户端跟踪每一行的修订号,在更新时一并发送,并按结果落定绘制内容。start 在客户端生成运行 id,因此重试的发起只算一次运行。

解码视图状态

bolt.decode 在浏览器中针对查看者可见的集合范围运行宿主的严格筛选解码器,因此来自 URL 的筛选或排序会在任何读取之前逐个条件地保留或丢弃。

没有浏览器副本

服务器是唯一的权威。没有持久化的浏览器存储,没有离线队列,也没有跨标签页代理;草稿保存在各自的表单中,直到得出结果。