Kanaalstatus opvragen
Drie server-side reads geven bezette kanalen weer, inspecteren één kanaal en tonen de leden van een presence-kanaal. Authenticeer elk verzoek met je Bird API-sleutel en de key en secret van de Realtime-app.
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') ?: '',
),
);Welke kanalen zijn bezet
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"Een kanaal verschijnt in de lijst zolang ten minste één verbinding geabonneerd is. Kanalen worden niet apart aangemaakt of geregistreerd, dus lege kanalen verschijnen niet. Gebruik prefix om het resultaat te beperken tot een groep zoals presence- of orders-.
Het antwoord is niet gepagineerd en retourneert elk bezet kanaal in één live snapshot. Zie Realtime-kanalen ophalen.
Eén kanaal inspecteren
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"Een onbekende of ongebruikte naam retourneert 200 OK met occupied: false. Gebruik dit resultaat om werk over te slaan wanneer geen verbinding het kan ontvangen. Zie Een Realtime-kanaal ophalen.
Tellingen, via include
include is herhaalbaar en accepteert precies twee waarden:
- member_count is het aantal unieke leden en werkt alleen op presence-kanalen.
- connection_count is het aantal verbindingen dat op het kanaal is geabonneerd en vereist de verbindingstellingsinstelling van de app.
Elke andere waarde retourneert 400 Bad Request. De API retourneert ook 400 Bad Request voor member_count op een niet-presence-kanaal, een lijstverzoek zonder presence-prefix, of connection_count wanneer verbindingstelling is uitgeschakeld.
Het opvragen van attributen telt als één extra bericht voor het verbruik. Laat ze weg wanneer occupied je vraag beantwoordt.
Eén lid kan meerdere verbindingen hebben. Een ruimte met drie personen die elk twee tabbladen open hebben, rapporteert een member_count van 3 en een connection_count van 6. Presence-kanalen legt het verschil uit.
Wie is aanwezig
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"Het antwoord bevat alleen lid-ID's. member_info wordt aan geabonneerde clients geleverd en is niet beschikbaar via deze REST-bewerking. Koppel de ID's aan je eigen records om namen of avatars weer te geven. Zie Kanaalleden ophalen.
Status lezen terwijl je publiceert
Gebruik bij het publiceren include om dezelfde tellingen voor elk doelkanaal op publicatietijdstip te retourneren. Zie Kanaalstatus lezen terwijl je publiceert.
Momentopnamegedrag
Elk antwoord is een momentopname en kan direct verouderd raken. Gebruik het voor eenmalige beslissingen in plaats van te pollen voor continue status.
Abonneer voor continue status een endpoint op de Realtime-webhookgroepen. realtime.channel_existence rapporteert bezette en verlaten kanalen, realtime.presence rapporteert ledenwisselingen en realtime.connection_count rapporteert wijzigingen in het aantal verbindingen. Gebruik kanaalstatus-reads om je opgeslagen weergave te initialiseren of te reconciliëren.
Volgende stappen
- Events publiceren behandelt publiceren, batching en de include-shortcut.
- Presence-kanalen legt leden, verbindingen en member_info uit.
- Realtime-overzicht legt apps, sleutels en waar het verbruik zichtbaar is uit.
Gerelateerde bronnen
Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.
Ontdek de mogelijkheidRealtimeVolg het leerpadBuild your first integrationImplementatiegidsSend your first realtime event
Probeer de oefening en ontvang een implementatieoverzicht