चैनल की स्थिति की क्वेरी करना
सर्वर-साइड के तीन रीड ऑपरेशन सक्रिय चैनलों की सूची देते हैं, किसी एक चैनल की जाँच करते हैं, और किसी presence चैनल के सदस्यों की सूची देते हैं। हर अनुरोध को अपनी Bird API कुंजी और 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') ?: '',
),
);कौन-से चैनल सक्रिय हैं
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"कोई चैनल तब तक सूची में दिखता है, जब तक कम से कम एक कनेक्शन उसकी सदस्यता लिए हुए है। चैनल अलग से बनाए या पंजीकृत नहीं किए जाते, इसलिए खाली चैनल सूची में नहीं दिखते। परिणाम को presence- या orders- जैसे किसी समूह तक सीमित करने के लिए prefix का उपयोग करें।
प्रतिक्रिया पेजों में नहीं बँटी होती और हर सक्रिय चैनल को एक ही लाइव स्नैपशॉट में लौटाती है। Realtime चैनलों की सूची बनाएँ देखें।
किसी एक चैनल की जाँच करें
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"अज्ञात या अप्रयुक्त नाम के लिए occupied: false के साथ 200 OK लौटता है। जब कोई कनेक्शन परिणाम प्राप्त नहीं कर सकता, तब काम छोड़ने के लिए इस परिणाम का उपयोग करें। Realtime चैनल प्राप्त करें देखें।
include के ज़रिए गिनती
include को कई बार दिया जा सकता है और यह ठीक दो मान स्वीकार करता है:
member_countअलग-अलग सदस्यों की संख्या है, और यह केवल presence चैनलों पर काम करता है।connection_countचैनल से सब्सक्राइब किए गए कनेक्शनों की संख्या है, और इसके लिए ऐप में कनेक्शन गिनने की सेटिंग चालू होनी चाहिए।
कोई भी अन्य मान 400 Bad Request लौटाता है। API इन स्थितियों में भी 400 Bad Request लौटाता है: नॉन-प्रेज़ेंस चैनल पर member_count माँगने पर, प्रेज़ेंस प्रीफ़िक्स के बिना सूची का अनुरोध करने पर, या कनेक्शन गिनती बंद होने पर connection_count माँगने पर।
एट्रिब्यूट माँगने पर उपयोग में एक अतिरिक्त संदेश गिना जाता है। अगर occupied से आपके सवाल का जवाब मिल जाता है, तो इन्हें न माँगें।
एक सदस्य के कई कनेक्शन हो सकते हैं। अगर किसी रूम में तीन लोग हैं और हर एक के दो टैब खुले हैं, तो member_count 3 और connection_count 6 आता है। प्रेज़ेंस चैनल में यह अंतर समझाया गया है।
कौन मौजूद है
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"प्रतिक्रिया में केवल सदस्य ID होती हैं। member_info सब्सक्राइब किए गए क्लाइंट को भेजा जाता है और इस REST ऑपरेशन से उपलब्ध नहीं होता। नाम या अवतार दिखाने के लिए इन ID को अपने रिकॉर्ड से मिलाएँ। देखें चैनल के सदस्यों की सूची।
पब्लिश करते समय स्थिति पढ़ना
पब्लिश करते समय include का उपयोग करें, ताकि पब्लिश के समय हर लक्षित चैनल की वही गिनतियाँ लौटें। देखें पब्लिश करते समय चैनल की स्थिति पढ़ना।
किसी एक समय की स्थिति
हर प्रतिक्रिया किसी एक समय का स्नैपशॉट होती है और तुरंत पुरानी पड़ सकती है। इसे एक बार के निर्णयों के लिए इस्तेमाल करें, लगातार स्थिति जानने के लिए बार-बार पोलिंग न करें।
लगातार स्थिति के लिए किसी एंडपॉइंट को Realtime वेबहुक समूहों से सब्सक्राइब करें। realtime.channel_existence भरे और खाली हुए चैनलों की जानकारी देता है, realtime.presence सदस्यों में बदलाव बताता है, और realtime.connection_count कनेक्शन गिनती में बदलाव बताता है। अपने सहेजे गए व्यू को शुरू करने या मिलान करने के लिए चैनल स्थिति पढ़ने वाले अनुरोधों का उपयोग करें।
आगे क्या करें
- इवेंट प्रकाशित करना में प्रकाशन, बैचिंग और
includeशॉर्टकट के बारे में बताया गया है। - प्रेज़ेंस चैनल में सदस्यों, कनेक्शनों और
member_infoके बारे में बताया गया है। - Realtime का अवलोकन में ऐप, कुंजियों और उपयोग कहाँ दिखाई देता है, इसके बारे में बताया गया है।
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।