Mengirim event ke member
Kirim event personal, seperti pembaruan pesanan, notifikasi dokumen bersama, atau perubahan saldo, langsung ke member. Anda tidak perlu membuat channel untuk setiap orang.
Panduan ini menjelaskan cara menerima member event, mengirimnya dari server Anda, dan memilih antara member event dan private channel.
Sebelum memulai
Koneksi harus masuk dengan identitas member. Lihat Mewajibkan koneksi terotorisasi untuk signin() dan endpoint otorisasinya.
Menerima event di aplikasi Anda
Setelah signin() berhasil, ikat nama event pada bird.member. Gunakan nama yang sama dengan yang dikirim server Anda sebagai event. Member event tidak memerlukan subscription channel.
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`);
});import BirdRealtime
let bird = BirdRealtime(options: .init(
appKey: "your-app-key",
region: "us1",
memberAuthEndpoint: URL(string: "https://your-backend.example.com/bird/auth/member")
))
let me = try await bird.signin()
print("signed in as", me.memberId)
bird.member.bind("order.shipped") { data in
let orderId = (data as? [String: Any])?["order_id"] as? String ?? ""
showToast("Order \(orderId) is on its way")
}import com.bird.realtime.BirdRealtime
import com.bird.realtime.BirdRealtimeOptions
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
val bird = BirdRealtime(
BirdRealtimeOptions(
appKey = "your-app-key",
region = "us1",
memberAuthEndpoint = "https://your-backend.example.com/bird/auth/member",
)
)
val me = bird.signin() // suspending
println("signed in as ${me.memberId}")
bird.member.bind("order.shipped") { data ->
val orderId = data?.jsonObject?.get("order_id")?.jsonPrimitive?.content
showToast("Order $orderId is on its way")
}Klien mempertahankan binding, masuk kembali setelah reconnect, lalu melanjutkan pengiriman member event.
signin() bersifat asinkron di ketiga klien. Di browser, ia mengembalikan promise, menggunakan async di Swift, dan melakukan suspend di Kotlin. Panggil dari konteks asinkron yang sesuai. Satu panggilan mengaktifkan sign-in otomatis setelah reconnect berikutnya.
Mengirim event dari server Anda
Panggil members.send dengan app ID, member ID, dan event:
await bird.realtime.members.send("rap_01krdgeqcxet5s7t44vh8rt9mg", "u_42", {
event: "order.shipped",
data: { order_id: "ord_123" },
});client.realtime.members.send(
"rap_01krdgeqcxet5s7t44vh8rt9mg",
"u_42",
event="order.shipped",
data={"order_id": "ord_123"},
)err = client.Realtime.Members.Send(context.Background(), "rap_01krdgeqcxet5s7t44vh8rt9mg", "u_42", bird.RealtimeMemberSendParams{
Event: "order.shipped",
Data: map[string]any{"order_id": "ord_123"},
})$bird->realtime->members->send('rap_01krdgeqcxet5s7t44vh8rt9mg', 'u_42', (new RealtimeMemberPublish())
->setEvent('order.shipped')
->setData(['order_id' => 'ord_123']));curl -X POST \
https://us1.platform.bird.com/v1/realtime/apps/rap_01krdgeqcxet5s7t44vh8rt9mg/members/u_42/events \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "X-Realtime-Key: $BIRD_REALTIME_KEY" \
-H "X-Realtime-Secret: $BIRD_REALTIME_SECRET" \
-H "Content-Type: application/json" \
-d '{ "event": "order.shipped", "data": { "order_id": "ord_123" } }'u_42 adalah member_id yang ditandatangani oleh endpoint otorisasi Anda. Gunakan identifier yang sudah ada di sistem Anda jika memenuhi persyaratan member ID.
Siapa yang menerima event
- Setiap koneksi yang dimiliki member tersebut, di semua tab dan perangkatnya. Satu panggilan, berapapun jumlah koneksinya.
- Tidak ada orang lain, meskipun aplikasi member lain mengikat nama event yang sama.
- Tidak ada jika member tidak memiliki koneksi aktif. Panggilan tetap berhasil karena pengiriman tidak diantrikan dan tidak dapat mengonfirmasi kehadiran. Simpan notifikasi persisten dan muat saat member kembali.
Member event atau private channel
| Gunakan member event | Gunakan private channel |
|---|---|
| Penerima adalah tujuannya: notifikasi personal, perubahan akun | Tujuannya adalah sesuatu yang diikuti beberapa orang bersama: dokumen, pesanan, ruang |
| Tidak perlu memberi nama atau mengotorisasi channel | Anda memberi nama channel dan mengotorisasi setiap subscription |
| Tidak ada presence, jumlah koneksi, atau client event | Presence, jumlah koneksi, dan client event tersedia |
Langkah selanjutnya
- Koneksi terotorisasi membahas signin() dan endpoint autentikasi member.
- Mengakhiri koneksi member menutup semua koneksi yang dimiliki member.
- Mengirim event ke member adalah referensi lengkap API.
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.
Jelajahi kemampuannyaRealtimeIkuti jalur pembelajaranBuild your first integrationPanduan implementasiSend your first realtime event
Coba praktiknya dan dapatkan ringkasan implementasi