उसी एप्लिकेशन में RESTful HTTP और वेबसोकेट?


17

यदि कोई एप्लिकेशन पहले से ही WebSocketलाइव फीड के लिए खोला गया है , तो क्या मुझे इसे AJAXसर्वर के साथ अन्य संचार के लिए उपयोग करना चाहिए ?

क्योंकि कनेक्शन पहले से ही खोला गया है, क्या हमें इसे उन अनुरोधों के लिए उपयोग करना चाहिए जो Request/Responseवास्तविक समय नहीं हैं ?

मैं RESTful HTTPअनुरोधों को प्राथमिकता देता हूं क्योंकि मुझे उन्हें डिबग करना अधिक आसान लगता है। एपीआई वापस क्या आता है, इसका परीक्षण करने के लिए आप यूआरएल या कर्ल के साथ एक ब्राउज़र का उपयोग कर सकते हैं। आपको खोलने के लिए कोड लिखने की आवश्यकता नहीं है WebSocket

यह RESTful HTTP APIएक WebSocketही आवेदन में है और अजीब होगा ?


1
"आपको एपीआई का परीक्षण करने के लिए कोई कोड लिखने की ज़रूरत नहीं है" क्या आप इसे थोड़ा और समझा सकते हैं? क्या आपको लगता है कि आपको एपीआई का परीक्षण करने की आवश्यकता नहीं है?
एलियास वान ओटगेम

Chrome डेवलपर टूल अगर मैं गलत नहीं हूँ आप एक WebSocket खोलने के लिए और संदेश भेजने के वास्तविक समय के लिए अनुमति देते
maple_shaft

@EliasVanOotegem अच्छी बात है। खेद है कि स्पष्ट नहीं था। आपको अभी भी सर्वर पर यूनिट प्रोजेक्ट के साथ एपीआई का परीक्षण करना है। मेरा क्या मतलब है, अगर आप चाहते हैं कि एपीआई क्या लौटाए, तो आप यूआरएल के साथ एक ब्रॉसर का उपयोग कर सकते हैं। वेबसीकेट खोलने के लिए आपको कोड लिखने की आवश्यकता नहीं है। मैंने अपना प्रश्न अपडेट किया।
मार्क

@maple_shaft यह अच्छा है, लेकिन आपको सर्वर के लिए खोले गए WebSocket वाले पृष्ठ पर होना चाहिए।
मार्क

जवाबों:


14

Websockets के मुख्य डिजाइन लक्ष्यों में से एक यह है कि यह HTTP और Websocket दोनों प्रोटोकॉल को एक ही पोर्ट पर संचारित करने की अनुमति देता है। यह स्पष्ट रूप से एक HTTP अपग्रेड अनुरोध के साथ एक Websocket हाथ मिलाने के लिए क्लाइंट की आवश्यकता के द्वारा इसे प्राप्त करता है। इस तरह से सर्वर एक मानक HTTP अनुरोध कनेक्शन के साथ-साथ एक HTTP अपग्रेड अनुरोध को संभाल सकता है जो अब लगातार द्वि-दिशात्मक द्वैध कनेक्शन में अपग्रेड किया जाता है।

तो हां, यह निश्चित रूप से एक वैध उपयोग मामला है, हालांकि आप अपने विशिष्ट आवेदन के लिए ऐसा करते हैं या नहीं यह पूरी तरह से एक अलग मामला है। वेबस्कॉकेट उपयोगी हैं और समझ में आता है कि आपके पास ऐसे परिदृश्य हैं जो सर्वर को क्लाइंट को अवांछित डेटा भेजने की क्षमता होनी चाहिए (लाइव फीड्स)। HTTP प्रोटोकॉल और REST सेवाएँ उपयोगी हैं जहाँ आप डेटा के सिंक्रोनस क्लाइंट सॉलिसिटेशन को रोकना चाहते हैं।

यदि आपकी आवश्यकताएं ऐसी हैं कि ये दोनों आपके आवेदन के लिए मायने रखते हैं तो हर तरह से आपको दोनों का उपयोग करना चाहिए। यदि फिर भी सर्वर के साथ आपकी एकमात्र बातचीत लाइव फीड आधारित है तो REST सेवाएँ उचित नहीं हैं। मुझे लगता है कि डिबगिंग में आसानी होना चाहिए, बल्कि सिस्टम क्वालिटी एट्रिब्यूट्स के लिहाज से कमतर होना चाहिए, ताकि आपको अपना डिजाइन आर्किटेक्ट करना पड़े।


1
यही मैं सोच रहा था। यह वास्तविक समय लाइव फ़ीड के लिए वेबस्कैट का उपयोग करने के लिए समझ में आता है, लेकिन सीआरयूडी संचालन के बारे में क्या? यह मेरे मन में उन लोगों के लिए एक मानक HTTP अनुरोध का उपयोग करने के लिए अधिक समझ में आता है।
मार्क

2
@Marc, मुझे CRUD संचालन और वास्तविक समय की चिंताओं को अलग करने के लिए अजीब नहीं लगेगा (एक HTTP का उपयोग अन्य वेबस्कैट) ... लेकिन ... मेरा मानना ​​है कि आपको सर्वर से बेहतर जवाबदेही मिलेगी, साथ ही बेहतर प्रदर्शन, यदि आप अपने सभी कार्यों के लिए लगातार कनेक्शन (वेबसोकेट) का उपयोग करते हैं। यह वास्तव में इस बात पर निर्भर करता है कि आपके CRUD को क्या चाहिए, लेकिन मैं एक CRUD Websocket इंटरफ़ेस से दूर नहीं हटूंगा।
रहस्य

upvoted! नौसिखिया यहाँ, क्योंकि आपने दोनों का उल्लेख एक ही पोर्ट पर किया जाना है, यदि आप एक लाइव स्ट्रीम से स्टॉक की कीमतें कह रहे हैं और भारी ट्रैफ़िक के कारण धारा कुछ मिनटों के लिए डिस्कनेक्ट हो जाती है, तो आपको बीच में या कैसे डेटा मिलेगा उस मामले से निपटने के लिए रणनीति मौजूद है
PirateApp
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.