安装
npx @insforge/cli secrets get ANON_KEY, or in the dashboard: click Install and open API Keys.
思维模型
TypeScript SDK 向您的 InsForge 后端打开一个 Socket.IO 连接。您订阅命名频道、监听事件名称,并可选地将事件发布回您已加入的频道。 事件可以来自两个地方:- 调用
realtime.publish(channel, event, payload)的数据库触发器。 - 调用
insforge.realtime.publish(channel, event, payload)的客户端。
快速开始
connect()
建立 WebSocket 连接。- 当存在当前身份验证令牌时,SDK 会包含它。如果没有登录用户,它可以使用配置的匿名密钥。
- 在连接已在进行中时的多次
connect()调用会重用相同的连接 promise。 - 连接尝试在 10 秒后超时。
subscribe()
订阅频道并接收当前的在线状态快照。
返回:
subscribe() 会在需要时自动连接。仍建议显式调用 connect(),以便连接事件处理程序已附加。
subscribe() 是幂等的:对您已加入的频道再次调用它会重新请求订阅并解析服务器当前的在线状态快照。服务器按逻辑成员追踪在线状态,因此重复订阅永远不会产生重复成员或虚假的 presence:join 事件。
publish()
将事件发布到频道。
发布失败通过
error 事件发出。
on()
监听自定义事件、连接事件、在线状态事件和实时错误。once()
监听事件一次,然后自动移除监听器。off()
移除事件监听器。unsubscribe()
离开频道。unsubscribe() 是即发即忘的。如果这是逻辑成员的最后一个套接字,其他订阅者会收到 presence:leave。
disconnect()
关闭 WebSocket 并清除本地订阅。消息结构
传递的消息包括您的载荷字段加上服务器元数据。senderType 为 system;对于客户端发布的消息,senderType 为 user。
在线状态
成功的订阅会返回当前的在线状态快照。读取在线状态
SDK 为每个已订阅的频道维护成员列表 — 从订阅快照初始化,并通过presence:join/presence:leave 增量和重新连接重新同步保持最新。随时读取它,而不是自己合并增量:
重新连接
当连接断开时,SDK 会在重新连接时自动重新订阅每个频道,并为每个频道发出带有新在线状态快照的presence:sync。在您断开连接期间加入或离开的成员不会产生单独的 presence:join/presence:leave 增量,因此请替换(而非合并)您在 SDK 之外保留的任何状态:
getPresenceState() 渲染,presence:sync 只是您的重新渲染信号。如果重新订阅被拒绝(例如用户的访问权限在断开连接时被撤销),SDK 会丢弃该频道并改为发出 error。