अधिकृत कनेक्शन अनिवार्य करना
App key सार्वजनिक होती है। आपका पेज लोड करने वाला कोई भी व्यक्ति इसका उपयोग करके कनेक्शन खोल सकता है और पब्लिक चैनलों को सब्सक्राइब कर सकता है।
अधिकृत कनेक्शन के लिए हर नए कनेक्शन को 30 सेकंड के भीतर अपनी अधिकृतता प्रमाणित करनी होती है। Realtime edge समय पर अधिकृत न होने वाले कनेक्शन बंद कर देता है।
अधिकृत कनेक्शन अनिवार्य करें
Realtime apps पेज पर ऐप के लिए Authorized connections सक्षम करें। आप Realtime API के माध्यम से authorized_connections को true पर भी सेट कर सकते हैं। यह सेटिंग ऐप की किसी भी key का उपयोग करने वाले हर कनेक्शन पर लागू होती है।
प्रोडक्शन में सेटिंग सक्षम करने से पहले क्लाइंट्स को अधिकृत होने के लिए अपडेट करें। सेटिंग सक्षम करने से पहले स्थापित कनेक्शन खुले रहते हैं, लेकिन पुराने क्लाइंट्स से बाद के कनेक्शन अधिकृतता टाइमआउट के बाद विफल हो जाते हैं।
अधिकृत किसे माना जाता है
नया कनेक्शन अनधिकृत अवस्था में शुरू होता है। इनमें से कोई भी क्रिया इसे अधिकृत करती है:
- प्राइवेट या प्रेज़ेंस सब्सक्रिप्शन सफल होता है। क्लाइंट कनेक्शन ID को आपके authEndpoint पर पोस्ट करता है, आपका बैकएंड उसे साइन करता है, और edge हस्ताक्षर सत्यापित करता है। देखें चैनल अधिकृत करना।
- signin() सफल होता है। क्लाइंट कनेक्शन ID को आपके memberAuthEndpoint पर पोस्ट करता है और एक साइन की हुई सदस्य पहचान प्राप्त करता है। संपूर्ण साइन-इन फ़्लो के लिए देखें सदस्य कनेक्शन समाप्त करना।
दोनों मार्ग एक ही बात प्रमाणित करते हैं: app secret रखने वाली किसी चीज़ ने इस कनेक्शन की पुष्टि की। पब्लिक चैनल को सब्सक्राइब करना कुछ प्रमाणित नहीं करता और किसी को अधिकृत नहीं करता।
केवल पब्लिक चैनल वाला मामला
जो क्लाइंट केवल पब्लिक चैनलों को सब्सक्राइब करता है, वह सामान्यतः आपके बैकएंड से संपर्क नहीं करता। अधिकृत कनेक्शन अनिवार्य करने के बाद, signin() कॉल करें ताकि कनेक्शन बिना प्राइवेट सब्सक्रिप्शन के अधिकृत हो सके:
import { BirdRealtime } from "@messagebird/realtime";
const bird = new BirdRealtime({
appKey: "your-app-key",
region: "us1",
memberAuthEndpoint: "/bird/auth/member",
});
await bird.signin();
const status = bird.subscribe("build-status");
status.bind("build-finished", (data) => render(data));import BirdRealtime
let bird = BirdRealtime(options: .init(
appKey: "your-app-key",
region: "us1",
memberAuthEndpoint: URL(string: "https://your-backend.example.com/bird/auth/member")
))
try await bird.signin()
let status = bird.subscribe("build-status")
status.bind("build-finished") { data in
render(data)
}import com.bird.realtime.BirdRealtime
import com.bird.realtime.BirdRealtimeOptions
val bird = BirdRealtime(
BirdRealtimeOptions(
appKey = "your-app-key",
region = "us1",
memberAuthEndpoint = "https://your-backend.example.com/bird/auth/member",
)
)
bird.signin() // suspending
val status = bird.subscribe("build-status")
status.bind("build-finished") { data ->
render(data)
}signin() एक बार कॉल करें। क्लाइंट हर रीकनेक्ट के बाद फिर से साइन इन करता है क्योंकि पहचान कनेक्शन से जुड़ी होती है। जब कॉलर को कनेक्ट नहीं करना चाहिए तब अपने सदस्य अधिकृतता endpoint से 403 Forbidden लौटाएँ।
यदि ऐप लोड होते समय किसी प्राइवेट या प्रेज़ेंस चैनल को सब्सक्राइब करता है, तो सफल सब्सक्रिप्शन पहले से ही कनेक्शन को अधिकृत कर देता है।
अधिकृत न होने पर क्लाइंट को क्या दिखता है
Edge कनेक्शन को कोड 4009 और कारण Connection not authorized within timeout के साथ बंद करता है। क्लाइंट्स इस रेंज के कोड पर फिर से प्रयास नहीं करते, इसलिए कनेक्शन failed स्थिति में चला जाता है।
bird.connection.bind("error", ({ code, message }) => {
if (code === 4009) console.warn(message);
});bird.onError { error in
if error.code == 4009 { print(error.message) }
}bird.onError { error ->
if (error.code == 4009) println(error.message)
}कोड 4009 उस सदस्य की भी पहचान करता है जिसके कनेक्शन आपके बैकएंड ने समाप्त किए। लॉगिन या साइन-आउट स्थिति चुनने से पहले कारण जाँचें। देखें सदस्य कनेक्शन समाप्त करना और कनेक्शन जीवनचक्र और पुनः कनेक्शन।
कनेक्शन अधिकृत होने तक ऐप के कनेक्शन कोटा में नहीं गिने जाते।
अधिकृतता का दायरा
अधिकृत कनेक्शन अनिवार्य करना नियंत्रित करता है कि कौन कनेक्शन खुला रख सकता है। यह अधिकृतता जाँचों को प्रतिस्थापित नहीं करता और न ही बदलता है कि कौन चैनल पढ़ सकता है:
- पब्लिक चैनल हर अधिकृत कनेक्शन के लिए पब्लिक ही रहता है। यदि इवेंट किसी एक ग्राहक के हैं, तो प्राइवेट चैनल का उपयोग करें और अपने endpoint में चैनल नाम जाँचें।
- आपके अपने auth endpoint जिसे भी साइन करते हैं वह अधिकृत हो जाता है, इसलिए एक उदार endpoint उतनी ही आसानी से अधिकृतता बाँटता है जितनी आसानी से app key बाँटती थी।
अगले कदम
- चैनल अधिकृत करना वह हस्ताक्षर है जो आपका बैकएंड प्राइवेट और प्रेज़ेंस सब्सक्रिप्शन के लिए गणना करता है।
- प्राइवेट चैनल तब सही विकल्प हैं जब इवेंट स्वयं किसी के हों।
- सदस्य कनेक्शन समाप्त करना signin() और 4009 के अन्य उपयोग को कवर करता है।
- किसी सदस्य को इवेंट भेजना चैनल के बजाय साइन-इन पहचान को इवेंट संबोधित करता है।
- कनेक्शन जीवनचक्र और पुनः कनेक्शन बताता है कि 4009 टर्मिनल क्यों है।
संबंधित संसाधन
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।
क्षमता जानेंRealtimeलर्निंग पाथ फ़ॉलो करेंBuild your first integrationइम्प्लीमेंटेशन गाइडSend your first realtime event
अभ्यास करें और इम्प्लीमेंटेशन ब्रीफ़ पाएँ