बॉडी के साथ HTTP अनुरोधों में संदर्भ रद्दीकरण सिग्नल हानि
गो में एक HTTP सर्वर विकसित करते समय, एक चिंता उत्पन्न हुई: context.Done( ) चैनल किसी निकाय के साथ अनुरोधों के लिए क्लाइंट डिस्कनेक्शन सिग्नल कैप्चर करने में विफल रहा। यह व्यवहार GET अनुरोधों से भिन्न था, जिसने क्लाइंट प्रस्थान का सफलतापूर्वक पता लगाया था।
अंतर्निहित कारण
यह असंगतता नेट/http सर्वर की कार्यप्रणाली से उत्पन्न होती है। इसका कनेक्शन जांच तंत्र तभी शुरू होता है जब एप्लिकेशन अनुरोध निकाय को पढ़ता है। चूंकि GET अनुरोधों का कोई मुख्य भाग नहीं है, इसलिए कनेक्शन जांच तुरंत चालू हो जाती है, जिससे सर्वर को क्लाइंट रद्दीकरण का तुरंत पता लगाने की अनुमति मिलती है। हालाँकि, POST अनुरोधों के लिए, सर्वर कनेक्शन जाँच शुरू करने से पहले मुख्य भाग को पढ़ने तक प्रतीक्षा करता है।
Solution
इस समस्या को हल करने के लिए, मैन्युअल रूप से पढ़ना आवश्यक है सर्वर की कनेक्शन जांच प्रक्रिया को प्रोत्साहित करने के लिए निकाय से अनुरोध करें। निम्नलिखित कोड स्निपेट इसे प्रदर्शित करता है:
func handler(w http.ResponseWriter, r *http.Request) { go func(doneअनुरोध निकाय को स्पष्ट रूप से पढ़कर, सर्वर क्लाइंट डिस्कनेक्शन का तुरंत पता लगा सकता है, यहां तक कि निकाय वाले अनुरोधों के लिए भी। यह सर्वर साइड पर उचित सफाई और संसाधन जारी करने की अनुमति देता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3