Sign inGet started

私有频道

名称以 private- 开头的频道除了公开的应用密钥外,还需要来自你的后端的授权。你的后端批准该频道的调用方,并返回使用应用密钥计算的签名。
私有频道适用于有权限范围的数据,例如客户的订单更新、租户的仪表板或个人的通知。
const bird = new BirdRealtime({
  appKey: "your-app-key",
  region: "us1",
  authEndpoint: "/bird/auth",
});

const orders = bird.subscribe("private-orders-4821");
orders.bind("order-updated", (data) => {
  console.log(data);
});
Swift 和 Kotlin 需要绝对授权 URL,而浏览器客户端可以使用同源路径。通过 authHeaders 添加 API 的会话令牌。客户端在每次授权请求中都会包含这些请求头,包括重连后的请求。
客户端将连接 ID 和频道名称发送到 authEndpoint。只有在端点批准调用方并返回有效签名后,订阅才会完成。授权频道定义了请求、响应和待签名字符串。

按用户或按租户命名频道

将资源范围放入频道名称中,并在端点中进行验证。客户端可以请求任意频道名称,因此你的后端必须防止跨客户订阅:
if (channel_name !== `private-orders-${user.accountId}`) {
  return res.sendStatus(403);
}
这个比较就是授权决策。切勿依赖不可猜测的频道名称来实现访问控制。

私有频道支持的功能

  • 客户端事件。 当应用启用了客户端事件后,已订阅的客户端可以向频道上的其他客户端发送 client- 事件,无需经过你的服务器中转。边缘节点会在公开频道上拒绝这些事件。
  • 连接计数。 当应用的连接计数和连接计数事件设置启用后,客户端会收到该频道的 bird:connection_count
  • 服务器发布。 从服务器发布的方式与公开频道完全相同:在 channels 数组中指定频道名称。授权不适用于你的服务器,因为它已经持有应用密钥。
私有频道没有成员身份信息,也没有成员事件。如果你需要了解谁在线,请使用在线状态频道

订阅被拒绝时

被拒绝的订阅会以 bird:subscription_error 形式到达。常见原因包括端点返回非 2xx 响应,或签名与请求不匹配。参阅授权频道了解故障排查方法。

后续步骤