Sign inGet started

向成员发送事件

将个人事件(例如订单更新、共享文档通知或余额变动)直接发送给成员。无需为每个用户创建单独的频道。
本指南介绍如何接收成员事件、从服务器发送成员事件,以及如何在成员事件与私有频道之间做出选择。

开始之前

连接必须使用成员身份登录。请参阅要求授权连接,了解 signin() 及其授权端点。

在应用中接收事件

signin() 成功后,在 bird.member 上绑定事件名称。使用与服务器作为 event 发送的相同名称。成员事件无需订阅频道。
import { BirdRealtime } from "@messagebird/realtime";

const bird = new BirdRealtime({
  appKey: "your-app-key",
  region: "us1",
  memberAuthEndpoint: "/bird/auth/member",
});

await bird.signin();

bird.member.bind("order.shipped", (data) => {
  showToast(`Order ${data.order_id} is on its way`);
});
客户端会保留绑定,在重新连接后登录,然后恢复成员事件的传递。
signin() 在三种客户端中都是异步的。在浏览器中返回 promise,在 Swift 中使用 async,在 Kotlin 中挂起。请在相应的异步上下文中调用。一次调用即可启用后续重新连接时的自动登录。

从服务器发送事件

使用应用 ID、成员 ID 和事件调用 members.send
await bird.realtime.members.send("rap_01krdgeqcxet5s7t44vh8rt9mg", "u_42", {
  event: "order.shipped",
  data: { order_id: "ord_123" },
});
u_42 是由授权端点签名的 member_id。如果系统中的现有标识符符合成员 ID 要求,可以直接使用。

谁会收到事件

  • 该成员持有的每个连接,跨越其所有标签页和设备。一次调用,无论有多少个连接。
  • 其他人不会收到,即使另一个成员的应用绑定了相同的事件名称。
  • Nothing if the member has no live connections. 如果该成员没有活跃连接,则无人收到。调用仍然成功,因为传递不会排队,也无法确认在线状态。请存储持久通知,并在成员返回时加载。

成员事件还是私有频道

使用成员事件使用私有频道
接收者即目标:个人通知、账户变更目标是多人关注的共享对象:文档、订单、房间
无需命名或授权频道需要命名频道并对每个订阅进行授权
无在线状态、连接计数或客户端事件支持在线状态、连接计数和客户端事件

后续步骤