概述
实时有两个表面:- REST API 用于频道管理、消息历史、交付统计、权限和保留设置。
- Socket.IO 用于实时订阅、发布、在线状态和已交付事件。
REST API 不流式传输消息。使用 Socket.IO 连接或 TypeScript SDK 来获取实时事件。
身份验证
管理员 REST 端点需要项目管理员令牌或 API 密钥。auth 对象进行身份验证:
Socket.IO 发布/订阅
当您没有使用 InsForge SDK 时,请安装 Socket.IO 客户端:连接并订阅
监听事件
发布
取消订阅
套接字事件
| 事件 | 方向 | 说明 |
|---|---|---|
realtime:subscribe | 客户端到服务器 | 订阅通道。确认返回成功/错误和存在快照。 |
realtime:unsubscribe | 客户端到服务器 | 离开通道。 |
realtime:publish | 客户端到服务器 | 将用户消息插入实时管道。 |
| Custom event name | 服务器到客户端 | 交付的消息,在消息eventName下发出。 |
presence:join | 服务器到客户端 | 一个逻辑成员在通道中变得存在。 |
presence:leave | 服务器到客户端 | 一个逻辑成员不再在通道中。 |
realtime:error | 服务器到客户端 | 订阅或发布失败。 |
通道模式
在客户端订阅之前创建通道定义。| 模式 | 匹配 |
|---|---|
orders | orders |
order:% | order:123, order:456 |
chat:%:messages | chat:room-1:messages |
LIKE,因此%是通配符。_在通道模式中不被接受,因为它也是SQL通配符。
通道
列出通道
创建通道
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
pattern | string | 是 | 通道模式。 |
description | string | 否 | 人类可读的说明。 |
webhookUrls | string[] | 否 | 每条交付的消息的Webhook URL。 |
enabled | boolean | 否 | 默认为true。禁用的通道无法加入或交付到。 |
获取通道
更新通道
删除通道
channelId值设置为null。
消息
列出消息
| 参数 | 类型 | 说明 |
|---|---|---|
channelId | uuid | 按通道ID过滤。 |
eventName | string | 按事件名称过滤。 |
limit | integer | 1到1000。默认为100。 |
offset | integer | 默认为0。 |
消息统计
| 参数 | 类型 | 说明 |
|---|---|---|
channelId | uuid | 按通道ID过滤统计。 |
since | date-time | 仅包含在此时间戳之后创建的消息。 |
retentionDays: null意味着消息无限期保留。
权限
realtime.channels上的订阅检查。realtime.messages上的发布检查。
配置
获取实时配置
更新实时配置
null以无限期保留消息。正整数保留消息指定天数。
Webhooks
当通道有webhookUrls时,通过该通道交付的每条消息都会被发布到每个URL。
请求正文是原始消息有效负载。标头标识交付:
| 标头 | 值 |
|---|---|
X-InsForge-Event | 事件名称 |
X-InsForge-Channel | 已解决的通道名称 |
X-InsForge-Message-Id | 消息UUID |
whAudienceCount和whDeliveredCount中。