BIRD Realtime

Realtime API untuk aplikasi Anda. Subscribe, publish, scale.

Siapkan dalam:
Cursor

Live chat, presence, notifikasi dalam aplikasi, dan dasbor real-time, tanpa perlu menjalankan infrastruktur WebSocket sendiri.

app.ts
connected
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);
});
Order BRD-49217Placed
ETAThursday, May 22

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.

1
2
3
4
5
6
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 channel

Apa 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.

  1. 01

    Skor dan hasil langsung

    Pembaruan pertandingan, hasil polling, malam pemilu: satu panggilan publish menyebarkan angka terbaru ke setiap layar yang ter-subscribe sekaligus.

  2. 02

    Chat dalam aplikasi

    Satu channel per ruang, presence untuk siapa yang online, dan client event untuk indikator mengetik, tanpa round-trip ke server.

  3. 03

    Kolaborasi online

    Client event menyebarkan posisi kursor, seleksi, dan sinyal co-editing antar pengguna melalui channel, tanpa melewati backend.

  4. 04

    Game multiplayer

    Presence mengisi lobi, client event membawa gerakan, dan satu channel per pertandingan menjaga state tetap terlihat oleh setiap pemain.

  5. 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.

  6. 06

    Indikator presence

    Presence channel melacak anggota saat bergabung dan keluar; webhook menjaga roster backend Anda tetap sinkron.

  7. 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.

  8. 08

    Status pesanan dan pengiriman

    Cache channel per pesanan menyimpan status terkini, sehingga subscription berfungsi ganda sebagai pengambilan state awal.

  9. 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. 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.

presence.ts
18 members
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.

POST /webhooks/bird
signed
{
  "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.

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.

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.

Mulai dengan satu channel.
Tambahkan yang lain saat Anda siap.

API key uji coba langsung tersedia untuk Anda. Akses produksi terbuka setelah Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Menggunakan Claude Code, Cursor, atau Codex? Salin prompt pengaturan dan agen Anda akan menginstal Bird CLI dan skill untuk Anda. Pilih milik Anda:

Cursor