跳到主要内容

Broadcast

event 收发瞬时消息。默认不回传自己发出的消息,也不等待服务端确认。

const channel = realtime.channel("broadcast-test", {
config: {
broadcast: { ack: false, self: false },
},
});

channel.on("broadcast", { event: "some-event" }, (payload) => {
console.log(payload);
});

channel.subscribe(async (status) => {
if (status !== "SUBSCRIBED") return;
await channel.send({
type: "broadcast",
event: "some-event",
payload: { hello: "world" },
});
});
选项说明
acktruesend() 会等服务端确认后再 resolve
selftrue 时发送方也会收到自己发出的消息
replay仅私有频道可用。按 since(毫秒时间戳)回放历史 Broadcast,可选 limit(最大 25)
const twelveHoursAgo = Date.now() - 12 * 60 * 60 * 1000;

const channel = realtime.channel("main:room", {
config: {
private: true,
broadcast: { replay: { since: twelveHoursAgo, limit: 10 } },
},
});

channel.on("broadcast", { event: "my_event" }, (payload) => {
if (payload?.meta?.replayed) {
console.log("历史消息", payload);
} else {
console.log("新消息", payload);
}
});
channel.subscribe();

未建立 WebSocket 时,send() 会回退到 HTTP;需要显式走 HTTP 时请用 httpSend()