Membaca status channel
Tiga operasi baca sisi server mencantumkan channel yang aktif, memeriksa satu channel, dan mencantumkan anggota presence channel. Autentikasi setiap permintaan dengan kunci Bird API Anda serta key dan secret aplikasi Realtime.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY,
realtime: {
key: process.env.BIRD_REALTIME_KEY,
secret: process.env.BIRD_REALTIME_SECRET,
},
});import os
from bird import Bird
client = Bird(
api_key=os.environ["BIRD_API_KEY"],
realtime_key=os.environ["BIRD_REALTIME_KEY"],
realtime_secret=os.environ["BIRD_REALTIME_SECRET"],
)client, err := bird.NewClient(
option.WithAPIKey(os.Getenv("BIRD_API_KEY")),
option.WithRealtimeCredentials(os.Getenv("BIRD_REALTIME_KEY"), os.Getenv("BIRD_REALTIME_SECRET")),
)
if err != nil {
log.Fatal(err)
}use MessageBird\Bird;
use MessageBird\RealtimeOptions;
$bird = new Bird(
getenv('BIRD_API_KEY') ?: '',
realtime: new RealtimeOptions(
key: getenv('BIRD_REALTIME_KEY') ?: '',
secret: getenv('BIRD_REALTIME_SECRET') ?: '',
),
);Channel mana yang aktif
const { data } = await bird.realtime.channels.list(appId, { prefix: "presence-" });
for (const channel of data) {
console.log(channel.name);
}channels = client.realtime.channels.list(app_id, prefix="presence-")
for channel in channels.data:
print(channel.name)channels, err := client.Realtime.Channels.List(context.Background(), appID, bird.RealtimeChannelListParams{
Prefix: "presence-",
})
if err != nil {
log.Fatal(err)
}
for _, ch := range channels.Data {
fmt.Println(ch.Name)
}$channels = $bird->realtime->channels->list($appId, ['prefix' => 'presence-']);
foreach ($channels->getData() ?? [] as $channel) {
echo $channel->getName(), "\n";
}curl "https://us1.platform.bird.com/v1/realtime/apps/$APP_ID/channels?prefix=presence-" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "X-Realtime-Key: $BIRD_REALTIME_KEY" \
-H "X-Realtime-Secret: $BIRD_REALTIME_SECRET"Sebuah channel muncul dalam daftar selama setidaknya satu koneksi berlangganan. Channel tidak dibuat atau didaftarkan secara terpisah, sehingga channel kosong tidak muncul. Gunakan prefix untuk membatasi hasil ke kelompok tertentu seperti presence- atau orders-.
Respons tidak dipaginasi dan mengembalikan semua channel aktif dalam satu snapshot langsung. Lihat Daftar channel Realtime.
Memeriksa satu channel
const channel = await bird.realtime.channels.get(appId, "presence-lobby", {
include: ["member_count"],
});
if (!channel.occupied) return; // nobody is listening; skip the workchannel = client.realtime.channels.get(app_id, "presence-lobby", include=["member_count"])
if not channel.occupied:
return # nobody is listening; skip the workchannel, err := client.Realtime.Channels.Get(context.Background(), appID, "presence-lobby", bird.RealtimeChannelGetParams{
Include: []bird.RealtimeChannelInclude{bird.RealtimeIncludeMemberCount},
})
if err != nil {
log.Fatal(err)
}
if !channel.Occupied {
return // nobody is listening; skip the work
}$channel = $bird->realtime->channels->get($appId, 'presence-lobby', ['include' => ['member_count']]);
if (!$channel->getOccupied()) {
return; // nobody is listening; skip the work
}curl "https://us1.platform.bird.com/v1/realtime/apps/$APP_ID/channels/presence-lobby?include=member_count" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "X-Realtime-Key: $BIRD_REALTIME_KEY" \
-H "X-Realtime-Secret: $BIRD_REALTIME_SECRET"Nama yang tidak dikenal atau tidak digunakan mengembalikan 200 OK dengan occupied: false. Gunakan hasil ini untuk melewati pekerjaan saat tidak ada koneksi yang dapat menerimanya. Lihat Mendapatkan channel Realtime.
Jumlah, melalui include
include dapat diulang dan menerima tepat dua nilai:
- member_count adalah jumlah anggota unik, dan hanya berfungsi pada presence channel.
- connection_count adalah jumlah koneksi yang berlangganan ke channel, dan memerlukan pengaturan penghitungan koneksi pada aplikasi.
Nilai lain mengembalikan 400 Bad Request. API juga mengembalikan 400 Bad Request untuk member_count pada channel non-presence, permintaan daftar tanpa prefiks presence, atau connection_count saat penghitungan koneksi dinonaktifkan.
Meminta atribut dihitung sebagai satu pesan tambahan terhadap penggunaan. Abaikan atribut jika occupied sudah menjawab pertanyaan Anda.
Satu anggota dapat memiliki beberapa koneksi. Sebuah ruangan dengan tiga orang yang masing-masing membuka dua tab melaporkan member_count sebesar 3 dan connection_count sebesar 6. Presence channel menjelaskan perbedaannya.
Siapa yang hadir
const { members } = await bird.realtime.channels.members(appId, "presence-lobby");
for (const member of members) {
console.log(member.member_id);
}presence = client.realtime.channels.members(app_id, "presence-lobby")
for member in presence.members:
print(member.member_id)members, err := client.Realtime.Channels.Members(context.Background(), appID, "presence-lobby")
if err != nil {
log.Fatal(err)
}
for _, m := range members.Members {
fmt.Println(m.MemberId)
}$presence = $bird->realtime->channels->members($appId, 'presence-lobby');
foreach ($presence->getMembers() ?? [] as $member) {
echo $member->getMemberId(), "\n";
}curl "https://us1.platform.bird.com/v1/realtime/apps/$APP_ID/channels/presence-lobby/members" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "X-Realtime-Key: $BIRD_REALTIME_KEY" \
-H "X-Realtime-Secret: $BIRD_REALTIME_SECRET"Respons hanya berisi ID anggota. member_info dikirimkan ke klien yang berlangganan dan tidak tersedia melalui operasi REST ini. Gabungkan ID tersebut dengan catatan Anda sendiri untuk menampilkan nama atau avatar. Lihat Daftar anggota channel.
Membaca status saat Anda mempublikasikan
Saat mempublikasikan, gunakan include untuk mengembalikan jumlah yang sama pada setiap channel target saat waktu publikasi. Lihat Membaca status channel saat Anda mempublikasikan.
Perilaku titik waktu
Setiap respons adalah snapshot titik waktu dan dapat langsung kedaluwarsa. Gunakan untuk keputusan satu kali, bukan polling untuk status berkelanjutan.
Untuk status berkelanjutan, langganan endpoint ke grup webhook Realtime. realtime.channel_existence melaporkan channel yang aktif dan kosong, realtime.presence melaporkan perubahan anggota, dan realtime.connection_count melaporkan perubahan jumlah koneksi. Gunakan pembacaan status channel untuk menginisialisasi atau merekonsiliasi tampilan tersimpan Anda.
Langkah selanjutnya
- Mempublikasikan event membahas publikasi, batching, dan pintasan include.
- Presence channel menjelaskan anggota, koneksi, dan member_info.
- Ringkasan Realtime menjelaskan aplikasi, kunci, dan tempat penggunaan ditampilkan.
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