प्राइवेट चैनल
जिस चैनल का नाम private- से शुरू होता है, उसे पब्लिक ऐप key के अलावा आपके बैकएंड से ऑथराइज़ेशन की आवश्यकता होती है। आपका बैकएंड उस चैनल के लिए कॉलर को अनुमोदित करता है और ऐप secret से गणना किया गया एक सिग्नेचर लौटाता है।
प्राइवेट चैनल का उपयोग स्कोप्ड डेटा के लिए करें, जैसे किसी ग्राहक के ऑर्डर अपडेट, किसी टेनेंट का डैशबोर्ड, या किसी एक व्यक्ति की नोटिफ़िकेशन।
const bird = new BirdRealtime({
appKey: "your-app-key",
region: "us1",
authEndpoint: "/bird/auth",
});
const orders = bird.subscribe("private-orders-4821");
orders.bind("order-updated", (data) => {
console.log(data);
});let bird = BirdRealtime(options: .init(
appKey: "your-app-key",
region: "us1",
authEndpoint: URL(string: "https://your-backend.example.com/bird/auth")
))
let orders = bird.subscribe("private-orders-4821")
orders.bind("order-updated") { data in
print(data ?? "")
}val bird = BirdRealtime(
BirdRealtimeOptions(
appKey = "your-app-key",
region = "us1",
authEndpoint = "https://your-backend.example.com/bird/auth",
)
)
val orders = bird.subscribe("private-orders-4821")
orders.bind("order-updated") { data ->
println(data)
}Swift और Kotlin को एक absolute ऑथराइज़ेशन URL चाहिए, जबकि ब्राउज़र क्लाइंट same-origin पाथ का उपयोग कर सकता है। अपने API का सेशन टोकन authHeaders के ज़रिए जोड़ें। क्लाइंट इन हेडर को हर ऑथराइज़ेशन अनुरोध में शामिल करता है, जिसमें रीकनेक्ट के बाद के अनुरोध भी शामिल हैं।
क्लाइंट कनेक्शन ID और चैनल नाम authEndpoint पर पोस्ट करता है। सब्सक्रिप्शन तभी पूरा होता है जब एंडपॉइंट कॉलर को अनुमोदित करता है और एक वैध सिग्नेचर लौटाता है। चैनल ऑथराइज़ करना अनुरोध, प्रतिक्रिया और साइन करने की स्ट्रिंग को परिभाषित करता है।
प्रति उपयोगकर्ता या प्रति टेनेंट चैनल नाम रखना
रिसोर्स स्कोप को चैनल नाम में रखें और अपने एंडपॉइंट में इसे सत्यापित करें। क्लाइंट किसी भी चैनल नाम का अनुरोध कर सकता है, इसलिए आपके बैकएंड को क्रॉस-कस्टमर सब्सक्रिप्शन रोकने होंगे:
if (channel_name !== `private-orders-${user.accountId}`) {
return res.sendStatus(403);
}if channel_name != f"private-orders-{user.account_id}":
return Response(status=403)if channelName != "private-orders-"+user.AccountID {
http.Error(w, "forbidden", http.StatusForbidden)
return
}if ($channelName !== "private-orders-{$user->accountId}") {
http_response_code(403);
return;
}यह तुलना ही ऑथराइज़ेशन निर्णय है। एक्सेस कंट्रोल के लिए कभी भी अनुमान-न-किए-जा-सकने-वाले चैनल नामों पर निर्भर न रहें।
प्राइवेट चैनल क्या सपोर्ट करते हैं
- क्लाइंट इवेंट। जब ऐप में क्लाइंट इवेंट सक्षम हों, तो सब्सक्राइब्ड क्लाइंट आपके सर्वर से हुए बिना चैनल पर अन्य क्लाइंट को client- इवेंट भेज सकता है। एज इन्हें पब्लिक चैनल पर अस्वीकार करता है।
- कनेक्शन काउंटिंग। ऐप की कनेक्शन काउंटिंग और कनेक्शन काउंट इवेंट सेटिंग सक्षम होने पर, क्लाइंट को चैनल के लिए bird:connection_count प्राप्त होता है।
- सर्वर पब्लिशिंग। आपके सर्वर से पब्लिश करना ठीक वैसे ही काम करता है जैसे पब्लिक चैनल के लिए: channels array में चैनल का नाम दें। आपके सर्वर पर कोई ऑथराइज़ेशन लागू नहीं होता, क्योंकि उसके पास पहले से ऐप secret होता है।
प्राइवेट चैनल में कोई मेंबर पहचान और कोई मेंबर इवेंट नहीं होते। अगर आपको जानना हो कि कौन उपस्थित है, तो प्रेज़ेंस चैनल का उपयोग करें।
जब सब्सक्रिप्शन अस्वीकार हो जाए
अस्वीकार किया गया सब्सक्रिप्शन bird:subscription_error के रूप में आता है। सामान्य कारणों में आपके एंडपॉइंट से non-2xx प्रतिक्रिया या अनुरोध से मेल न खाने वाला सिग्नेचर शामिल है। समस्या निवारण के लिए चैनल ऑथराइज़ करना देखें।
अगले कदम
- चैनल ऑथराइज़ करना वह अनुबंध है जिसे आपका बैकएंड लागू करता है।
- प्रेज़ेंस चैनल उसी ऑथराइज़ेशन के ऊपर मेंबर पहचान जोड़ते हैं।
- इवेंट प्राप्तकर्ताओं को बाहर करना क्लाइंट को उस इवेंट को प्राप्त करने से रोकता है जो उसने स्वयं उत्पन्न किया था।
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।