@ 12- apps/ 实时
便携式实时 事件系统: 总线、 授权和 流出它,一个可运行的 WebSocket网关,一个交易出柜,浏览器客户端,以及 门,使可分解域不被航运沉默.
2家工厂,每个工厂1个配置对象 采用.md。 。 。 .
// backend
const events = eventsRouter({ surfaces, outbox: { db: () => prisma } });
app.route("/api", events.router);
await events.start();
// frontend
const web = createWebEvents({ apiBase: "/api" });
const { status } = web.useTopics({ topics: ["kitchen"], onMessage: invalidate });
useQuery({ /* … */ refetchInterval: reconcileRefetchInterval(status, POLL_MS, RECONCILE_MS) });
| 子路径 | 这是什么 |
|---|---|
. | 无框架总线:主题, publishRealtimeEvent, (中文(简体) ), subscribeRealtime,驱动端口,内置驱动程序 |
./redis | 跨进程驱动程序, 隐藏在自己的子路径后, 所以一个发射站点永远不会拖动 ioredis 装入捆绑 |
./ticket | 连接车票:薄荷、验证、单用警卫 |
./server | createApiEvents - 专题登记、授权接合、SSE运输、连接盖、发包箱 |
./hono | eventsRouter 单调挂起(hono 是可选对等点) |
./gateway | startRealtimeGateway外加一个 realtime-gateway 宾 (ws 是可选对等点) |
./react | createWebEvents ——客户端,重联政策,ws-sse降级,活人表,钩子 |
./node | 同一客户端的运行时间没有 EventSource 事件流 WireSource 结束 fetch,用于桌面代理、工人或CLI |
./worker | 共享工人体,为希望一个人连接的宿主 |
./parity | 出版商-均等门: 库 + CLI |
prisma/ | 发件箱模式 + 其迁移, 复制到主机的 schema 文件夹 |
三个规则 其他一切从
- 出版从不扔. 实时是消费者投票的暂时优化 倒行逆施,因此一出公交车停用会降解为"下个民意调查所见"——永远不会变成失败的突变.
- 送货最好 没有重播。 每次活动都是对READ的提示
数据库保持真相的来源 民意调查是永久的,只有实时
放松点.
data载有识别器,从未说明... 这里的有效载荷是第二, 未加保管的核准决定副本. - 网关没有执行授权 . API 表面由主机自己的规则决定 并签名 RESOLVED 主题名称 成短寿命,单一使用票。 一个话题是 从未被移交过从未被订阅过, 因此网关错误可以打破套接字但不能 泄露另一个房客的事件.
接通后出现. 一个地表 authorize 可能命名存在密钥; 进程
持有连接宣布 held 当它打开时( 从服务器更新) 和
released 当它关闭,和API's presence.onChange 听到每个持有者——没有心跳
任何浏览器中的民意调查 。 见Adopting.md,"Presence".
其保证是: 完全的坚持, 至少与一等消费者一起出版,没有总订单. 见Adopting.md——它并不是一成不变的,也不是假装的.