मेरे पास एक सी # एएसपी.Net (गैर एमवीसी) प्रोजेक्ट है जो अजाक्स धूमकेतु लंबे मतदान का उपयोग करता है। एक वेब पेज IHttpAsyncHandler को लागू करने वाले वर्ग द्वारा प्रबंधित एंडपॉइंट पर HTTP कॉल करता है।वेबएपीआई 2 के माध्यम से सी # अजाक्स धूमकेतु कैसे करें?
यदि वेब पेज पर रिपोर्ट करने के लिए कुछ भी नहीं है (एन सेकेंड के भीतर), तो एक खाली HTTP प्रतिक्रिया भेजी जाती है, और वेबपृष्ठ पुनः कॉल करता है। अगर भेजने के लिए कुछ है, और अद्यतन भेजा जाता है, और वेबपृष्ठ प्रक्रियाओं और फिर से कॉल करता है। यह सुंदर मानक पुश प्रौद्योगिकी है, और बहुत अच्छी तरह से काम करता है।
अब मैं वेबएपीआई 2, गैर-एमवीसी का उपयोग करके एपीआई एंडपॉइंट्स जोड़ने की कोशिश कर रहा हूं। मेरे पास एपीकंट्रोलर क्लास के आधार पर सिंक्रोनस नियंत्रक काम कर रहे हैं।
मैं एपीआई कॉल के लिए पुश तकनीक स्थापित करना चाहता हूं, ताकि एपीआई उपयोगकर्ताओं को अपडेट के लिए मतदान नहीं करना पड़े।
उपर्युक्त विधि के समान, एपीआई एंडपॉइंट कॉल प्राप्त होता है, और संदर्भ संग्रहीत किया जाता है। यदि टाइमआउट समाप्त हो जाता है, तो कॉल खाली कर दिया जाता है, और कॉलर से फिर से कॉल करने की उम्मीद है। यदि टाइमआउट के भीतर डेटा अपडेट होता है, तो डेटा कॉलर पर वापस कर दिया जाता है, और फिर कॉलर को फिर से कॉल करने और अधिक अपडेट की प्रतीक्षा करने की उम्मीद है।
समस्या यह है कि एपीकंट्रोलर का कोई असीमित संस्करण नहीं लगता है। इसका उद्देश्य एपीआई कॉल को संभालने वाले थ्रेड को मुक्त करना है, इसे पूल में वापस करने के लिए, और फिर जब डेटा उपलब्ध होता है, या टाइमआउट समाप्त हो जाता है, तो प्रतिक्रिया वापस करने के लिए एक कार्यकर्ता थ्रेड का उपयोग किया जाता है।
मैं एक एपीकंट्रोलर कैसे स्थापित कर सकता हूं ताकि कॉल को थ्रेड प्रोसेसिंग मुक्त कर दिया जा सके, कॉल संदर्भ संग्रहीत हो, और मैं बाद में किसी बिंदु पर कॉल को प्रतिक्रिया भेज सकता हूं?
आप सिग्नलआर का उपयोग क्यों नहीं करते? –
लंबे मतदान कार्य करता है और विशेष रूप से खराब गुणवत्ता वाले कनेक्शन के लिए बहुत ही कुशल है। यह अच्छी तरह से काम कर रहा है। मुझे बस यह पता लगाने की आवश्यकता है कि वेबएपीआई 2 कनेक्शन को कैसे लटकाया जाए जैसे कि यह एक मानक HTTP अनुरोध था। –