BIRD Realtime
Realtime API untuk aplikasi Anda. Subscribe, publish, scale.
Live chat, presence, notifikasi dalam aplikasi, dan dasbor real-time, tanpa perlu menjalankan infrastruktur WebSocket sendiri.
import { BirdRealtime } from "@messagebird/realtime";
const bird = new BirdRealtime({
appKey: APP_KEY,
region: "us1",
});
const channel = bird.subscribe("orders-42");
channel.bind("order-shipped", (data) => {
render(data);
});
5 menit dari npm install ke event pertama
Publish event pertama Anda dari bahasa yang sudah Anda gunakan.
SDK server untuk Node, Python, dan Go, klien browser untuk sisi subscribe, dan HTTP biasa jika Anda tidak ingin menambahkan dependensi. Sebuah channel tidak perlu provisioning: channel langsung ada begitu sesuatu subscribe ke sana.
const result = await bird.realtime.publish("rap_01krdgeqcxet5s7t44vh8rt9mg", {
event: "order.updated",
channels: ["orders", "presence-lobby"],
data: { order_id: "ord_123", status: "shipped" },
});
console.log(result.data?.length); // one entry per channelApa yang bisa Anda bangun dengan Realtime
Hadirkan pembaruan langsung ke setiap bagian produk Anda, dari chat dan dasbor hingga pelacakan dan game, semuanya melalui satu API sederhana.
- 01
Skor dan hasil langsung
Pembaruan pertandingan, hasil polling, malam pemilu: satu panggilan publish menyebarkan angka terbaru ke setiap layar yang ter-subscribe sekaligus.
- 02
Chat dalam aplikasi
Satu channel per ruang, presence untuk siapa yang online, dan client event untuk indikator mengetik, tanpa round-trip ke server.
- 03
Kolaborasi online
Client event menyebarkan posisi kursor, seleksi, dan sinyal co-editing antar pengguna melalui channel, tanpa melewati backend.
- 04
Game multiplayer
Presence mengisi lobi, client event membawa gerakan, dan satu channel per pertandingan menjaga state tetap terlihat oleh setiap pemain.
- 05
Grafik dan dasbor langsung
Publish metrik saat berubah. Cache channel menyerahkan nilai terkini ke setiap pengguna yang bergabung terlambat, sehingga grafik tidak pernah tampil kosong.
- 06
Indikator presence
Presence channel melacak anggota saat bergabung dan keluar; webhook menjaga roster backend Anda tetap sinkron.
- 07
Pelacakan lokasi langsung
Kurir di peta pelanggan, teman berbagi rute, armada di layar dispatch: publish koordinat dan setiap pengamat mengikuti, dengan posisi terakhir yang diketahui di-cache untuk yang bergabung terlambat.
- 08
Status pesanan dan pengiriman
Cache channel per pesanan menyimpan status terkini, sehingga subscription berfungsi ganda sebagai pengambilan state awal.
- 09
Lelang dan penawaran
Setiap tawaran muncul di layar semua penawar secara bersamaan, dan cache channel menyerahkan tawaran tertinggi saat ini kepada siapa pun yang bergabung di tengah lelang.
- 10
Feed notifikasi per pengguna
Satu channel privat per pengguna, subscription ditandatangani oleh backend Anda, sehingga hanya klien yang tepat yang bisa mendengarkan.
Mengapa Realtime
UX langsung adalah bagian yang pertama rusak saat Anda melakukan scaling. Kami sudah menjalankannya selama lebih dari satu dekade.
Connection state, presence, fan-out, reconnection backoff, dan kapasitas untuk menyerap lonjakan trafik adalah bagian dari fitur live yang mudah diprototipe tetapi sulit dioperasikan. Realtime menjalankannya sebagai layanan terkelola di dalam Bird API, sehingga channel live berbagi autentikasi, observabilitas, dan webhook yang sudah Anda gunakan untuk email dan SMS.
const room = bird.subscribe("presence-room-42");
room.bind("bird:subscription_succeeded", () => {
const members = [...room.members.values()];
render({ me: room.myId, members });
});
room.bind("bird:member_added", (member) => {
addToRoster(member.member_id);
});
room.bind("bird:member_removed", (member) => {
removeFromRoster(member.member_id);
});
Setiap perubahan status adalah webhook.
Klien datang dan pergi tanpa pernah menyentuh backend Anda. Begini cara backend mengetahuinya: mulai pekerjaan berat saat subscriber pertama tiba, hentikan saat yang terakhir pergi, dan jaga pandangan Anda sendiri tentang siapa yang ada di sebuah ruang.
{
"type": "realtime.member_added",
"timestamp": "2026-05-19T15:42:01.221Z",
"data": {
"channel": "presence-room-42",
"member_id": "usr_4hQ2m"
}
}
realtime.channel_occupiedSubscriber pertama bergabung ke channel yang sebelumnya kosong.realtime.channel_vacatedSubscriber terakhir keluar; channel sekarang kosong.realtime.member_addedSeorang member bergabung ke presence channel.realtime.member_removedSeorang member meninggalkan presence channel.realtime.connection_countJumlah koneksi suatu channel berubah.
Jika Anda sudah mengintegrasikan email, Anda sudah mengintegrasikan Realtime.
Auth yang sama, kontrak idempotensi yang sama, envelope error yang sama, format webhook yang sama. Perbedaannya ada di transport: koneksi WebSocket yang persisten, bukan pengiriman REST sekali kirim.
Realtime.
await bird.realtime.members.send(APP_ID, "usr_4hQ2m", {
event: "order-shipped",
data: { status: "shipped" },
});
Menjangkau seseorang di mana pun mereka terhubung, setiap tab dan perangkat sekaligus. Tanpa perlu menamai channel, tanpa perlu melacak koneksi.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order has shipped.`,
category: "transactional",
});
Panggilan yang sama, satu channel berbeda. Untuk saat pembaruan perlu sampai ke ponsel, bukan ke klien yang terhubung.