यह देखते हुए कि सिग्नल एक कनेक्शन आधारित क्लाइंट/सर्वर समाधान है, आप लंबे समय तक खुले कनेक्शन की अपेक्षा नहीं कर सकते हैं। इसलिए केल्सो शार्प ने अपने जवाब में लिखा था, एकमात्र अच्छी चीज जो आप कर सकते हैं वह कनेक्शन जीवन चक्र की घटनाओं का प्रबंधन करती है। https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#connectionlifetime
तो अगर हम कैसे एक लगातार कनेक्शन है कि कभी असफल नहीं होता बनाने के लिए पर ध्यान केंद्रित करने नहीं करते, हम बजाय देने पर ध्यान केंद्रित कर सके:
एक signalR कनेक्शन के सभी के जीवन चक्र की घटनाओं के लिए दस्तावेज़ीकरण देखें उपयोगकर्ता उस पर एक छाप, डिस्कनेक्ट, पुनः लोड और पृष्ठभूमि में चालाकी से प्रबंधन करके।
यहां एक आरेख है जो दिखाता है कि मैं इसे कैसे स्थापित करूंगा, भले ही आप यह निर्दिष्ट न करें कि आपके हब ग्राहकों को डेटा को धक्का देने का कारण बनता है, लेकिन मैं इमेजिंग करता हूं कि यह इस आरेख की तरह कुछ हो सकता है। यहां विचार यह है कि आप एक ही राज्य को किसी प्रकार के राज्य प्रदाता को धक्का देते हैं - यानी कैश, वेब एपीआई स्टोरेज, ताकि आपके पास किसी भी समय उपलब्ध डेटा का पूरा सेट हो। जब ui लोड या डिस्कनेक्ट हो जाता है, तो उसे इस प्रदाता को राज्य वापस पाने के लिए अनुरोध जारी करना चाहिए, और फिर इसे हब से फिर से कनेक्ट करना चाहिए।
यदि डेटा स्थिरता कोई समस्या है, तो आप राज्य के संस्करण को कर सकते हैं, स्थानीय प्रतिलिपि UI में रख सकते हैं, और फिर पुन: कनेक्ट करने पर ऑडिट कर सकते हैं। इस तरह आप देख सकते हैं कि क्या आप किसी चीज़ पर चूक गए हैं, इस मामले में आप राज्य प्रदाता को पकड़ लेना जारी करेंगे। // इस संबंध चक्र के दौरान सभी राज्य में परिवर्तन के लिए ट्रिगर किया जाएगा:
अपने ग्राहक पक्ष पर घटनाओं तुम सिर्फ कुछ कार्यों में हुक है संभालने के लिए
$.connection.hub.stateChanged(function (change) {
if (change.newState === $.signalR.connectionState.reconnecting) {
console.log("liveFeed is reconnecting!");
}
else if (change.newState === $.signalR.connectionState.connected) {
console.log("liveFeed is connected!");
}
});
// इस जब हब से डिस्कनेक्ट हो जाता है तो ट्रिगर होता है।
$.connection.hub.disconnected(function() {
console.log('Connection disconnected')
});
यह प्रश्न राय आधारित है और इस प्रकार स्टैक ओवरफ़्लो के लिए ऑफ-विषय है। –
किसी एपीआई को एक त्रुटि-आधारित तरीके से एक राय आधारित प्रश्न कैसे बुला रहा है?! – Cine
* सिग्नलआर से कनेक्ट करने के लिए सही जावास्क्रिप्ट पैटर्न क्या है ...? * चूंकि सिग्नलआर (हब, लगातार कनेक्शन इत्यादि) से कनेक्ट करने के लिए कोई भी "सही" पैटर्न नहीं है, यह राय का विषय है जो "सबसे सही है "। –