Realtime sedang ditingkatkan

Pub/sub terkelola melalui WebSocket. Subscribe, publish, skalakan.

Live chat, presence, notifikasi dalam aplikasi, dasbor real-time — tanpa menjalankan infrastruktur WebSocket sendiri. Dibangun di atas teknologi yang sama yang menjalankan Pusher Channels selama satu dekade. Auth, idempotency, dan kontrak webhook yang sama seperti setiap channel Bird lainnya.

realtime.ts
200 · 0.2s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

// On your server: publish an event to a channel.
const { data, error } = await bird.realtime.publish({
  channel: "orders:BRD-49217",
  event:   "order.shipped",
  data:    { status: "shipped", eta: "Thursday, May 22" },
}).safe();

// In your client: subscribe and receive it live.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => render(event.data));

if (error) throw error;
console.log(data.id);
// → "evt_2nQ81oP3..."

5 menit dari npm install ke event pertama

Publish event pertama Anda dari bahasa yang sudah Anda gunakan.

SDK di setiap runtime utama. Publish pertama mendarat di channel uji coba resmi (bird-test:realtime) sehingga Anda bisa mengirim CI check sebelum menyediakan channel produksi.

1
2
3
4
5
6
7
8
9
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.realtime.publish({
  channel: "bird-test:realtime",
  event:   "ping",
  data:    { hello: "world" },
}).safe();

Sepuluh hal antara "server Anda mem-publish" dan "klien Anda menerima event."

Primitif pub/sub terkelola, bernama dan dapat diaudit. Tidak perlu menjalankan infrastruktur WebSocket sendiri.

  1. 01

    Subscribe ke channel bernama

    Klien membuka koneksi, subscribe ke satu atau lebih channel, menerima event saat dipublish.

  2. 02

    Publish dari mana saja

    Dari backend Anda, CLI Anda, CI Anda, atau agen yang mendukung MCP — panggilan bird.realtime.publish yang sama.

  3. 03

    Presence channels

    Ketahui siapa yang ada di channel, siapa yang bergabung, siapa yang keluar. Event webhook di setiap perubahan.

  4. 04

    Private channels dengan auth

    Handshake auth di sisi klien; backend Anda menandatangani permintaan subscription.

  5. 05

    Encrypted channels

    Enkripsi end-to-end untuk channel yang membawa payload sensitif.

  6. 06

    Pemulihan status koneksi

    Klien terhubung kembali dan memutar ulang event yang terlewat selama terputus, hingga jendela waktu yang dapat dikonfigurasi.

  7. 07

    Rate limit level channel

    Batas publish per channel yang dapat dikonfigurasi. Dasbor menampilkan limit dan rate saat ini.

  8. 08

    Routing lintas wilayah

    Koneksi diarahkan ke edge node terdekat secara otomatis. Latensi tetap rendah di wilayah mana pun.

  9. 09

    Webhook pada status channel

    realtime.channel.occupied, realtime.channel.vacated, realtime.member.added, realtime.member.removed. Envelope HMAC yang sama seperti setiap channel Bird lainnya.

  10. 10

    Auth yang sama, envelope error yang sama

    Satu API key untuk Realtime, SMS, Email, WhatsApp, Voice. Satu registri tipe error untuk semuanya.

Mengapa kami membangun Realtime

UX live adalah bagian yang pertama rusak saat Anda melakukan skalasi. Kami sudah menjalankannya selama satu dekade.

Bird Realtime adalah infrastruktur WebSocket yang menggerakkan Pusher Channels — layanan yang telah banyak dari Anda gunakan selama bertahun-tahun. Kami mengintegrasikannya ke dalam API Bird baru agar berbagi auth, observability, dan billing dengan semua hal lain yang Anda lakukan di Bird. Jika Anda sudah menggunakan Pusher hari ini, layanan Anda tetap berjalan di jalur yang sama; SDK baru adalah perubahan dari sisi developer.

realtime.ts
200 · 0.2s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

// On your server: publish an event to a channel.
const { data, error } = await bird.realtime.publish({
  channel: "orders:BRD-49217",
  event:   "order.shipped",
  data:    { status: "shipped", eta: "Thursday, May 22" },
}).safe();

// In your client: subscribe and receive it live.
const channel = bird.realtime.subscribe("orders:BRD-49217");
channel.on("order.shipped", (event) => render(event.data));

if (error) throw error;
console.log(data.id);
// → "evt_2nQ81oP3..."

Setiap perubahan status adalah webhook.

Payload bertanda tangan HMAC, dilindungi dari replay, idempotent. Envelope yang sama di setiap channel Bird — pelajari satu, Anda sudah mempelajari semuanya.

POST /webhooks/bird
signed
{
  "type": "realtime.member.added",
  "id":   "evt_3pX1g7t...",
  "created_at": "2026-05-19T15:42:01.221Z",
  "data": {
    "channel":   "presence:room-42",
    "member_id": "usr_4hQ2m",
    "members":   18,
    "region":    "us-east"
  }
}

Jadwal percobaan ulang: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter setelah percobaan terakhir; setiap event dead-letter dapat di-replay dari dashboard atau API.

  • 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.message.publishedSebuah event dipublish ke channel.

Jika Anda sudah mengintegrasikan email, Anda sudah mengintegrasikan Realtime.

Auth sama, kontrak idempotency sama, format error sama, bentuk webhook sama. Perbedaannya ada di transport — koneksi WebSocket yang persisten, bukan pengiriman REST sekali kirim.

Realtime.

realtime
const channel = bird.realtime.subscribe("orders:BRD-49217");

channel.on("order.shipped", (event) => {
  render(event.data);
});

Buka koneksi, subscribe ke channel, terima event secara real-time. Auth sama seperti pengiriman transaksional Anda.

SMS.

sms
await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your order has shipped.`,
  category: "transactional",
});

Format sama, idempotency sama. Untuk saat event perlu sampai ke ponsel, bukan ke klien yang terhubung.

Harga segera diumumkan.

Harga Realtime sedang dalam finalisasi. Jika Anda pelanggan Pusher Channels saat ini, layanan Anda tetap berjalan di paket yang ada. Untuk penawaran Bird Realtime SDK yang baru, hubungi kami.

Bergabung ke daftar tunggu

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