2015-12-01 10 views
6

HTTP/2 पाइपलाइनिंग, मल्टीप्लेक्सिंग और सर्वर पुश वादे जैसे कुछ बहुत ही रोचक विशेषताओं को प्रस्तुत करता है; जो अपने आप पर भयानक हैं। बदले में, हमने वेबसाकेट्स का त्याग किया।बिडरेक्शनल (और सममित) संचार के लिए एक एकल HTTP/2 कनेक्शन का उपयोग

सिद्धांत में HTTP/2 पुश वादे के रूप में सर्वर और क्लाइंट के बीच द्विपक्षीय संचार की अनुमति देता है। सर्वर से पूछे जाने से पहले ग्राहक को प्रतिक्रिया भेज सकते हैं। फिर; बहुत बढ़िया। हालांकि ये अनुरोध ग्राहक के अनुरोध से अलग हैं।

तो हाथ में प्रश्न:
वहाँ कि बिना दोनों सर्वर और ग्राहक एक दूसरे के लिए मनमाने ढंग से संदेश (बाइनरी लोगों के लिए अतिरिक्त अंक) भेजने की अनुमति देता एक एकल HTTP/2 कनेक्शन है करने के लिए एक रास्ता है क्लाइंट भेजे गए संदेशों के लिए एक अलग प्रोटोकॉल परिभाषित करें और सर्वर संदेश भेजे गए?

वेबसाकेट्स मैं जो खोज रहा हूं उसका एक बड़ा उदाहरण है क्योंकि दोनों पक्षों में से कोई भी कनेक्शन शुरू कर सकता है और फिर दोनों संदेश भेज सकते हैं।

एक समाधान जो HTTP/2 को तोड़ता नहीं है वह आदर्श होगा लेकिन प्रोटोकॉल दुरुपयोग का भी स्वागत है।
अग्रिम में आपका बहुत बहुत धन्यवाद।

ps। इस अभ्यास का उद्देश्य यह पता लगाना है कि क्या जीआरपीसी, थ्रिफ्ट इत्यादि जैसे परिवहन प्रोटोकॉल को सर्वर/क्लाइंट आर्किटेक्चर के बिना HTTP/2 के शीर्ष पर डिज़ाइन किया जा सकता है, लेकिन जहां दोनों पक्ष संदेश भेज और प्राप्त कर सकते हैं जैसे कि रिक/रेस, पब/उप, आरपीसी, आदि के शीर्ष पर बनाया जा सकता है।

+0

जीआरपीसी डिफ़ॉल्ट रूप से http2 का उपयोग करता है। http://www.grpc.io/docs/guides/wire.html – nibin012

उत्तर

5

अभी आप जो चाहते हैं उसकी सबसे नज़दीकी चीज सर्वर से भेजे गए ईवेंट हैं। इसे HTTP/2 के साथ ठीक से काम करना चाहिए और यह आदत आईई को छोड़कर सभी ब्राउज़रों द्वारा समर्थित है, लेकिन एक पॉलीफिल उपलब्ध है (जो आपकी रैम खाएगा)। यद्यपि कुछ हिस्सों से बचने के बिना कोई बाइनरी समर्थन नहीं है, क्योंकि न्यूज़लाइन का उपयोग संदेश भागों और संदेशों को अलग करने के लिए किया जाता है।

कुछ और सूचनाएं (सुधार का स्वागत करते हैं):

  • WebSockets है अच्छी तरह से और लात। इसके लिए निकट भविष्य में HTTP/2 कनेक्ट सेवा योग्य होना चाहिए, अगर यह अभी नहीं है।
  • लेकिन सर्वर क्लाइंट को websockets शुरू नहीं कर सकते हैं।
  • पुश वादे एक बहुत ही अलग उद्देश्य की सेवा करते हैं, नहीं, आप websockets के स्थान पर उनका उपयोग नहीं कर सकते हैं।

HTTP/2 पुश को पुश कहा जाता है, लेकिन सर्वर से धक्का अधिसूचनाओं के साथ इसका कोई लेना-देना नहीं है। यह राउंड-ट्रिप को सहेजकर एप्लिकेशन लोड समय को कम करने का एक कम या कम समझदार तरीका है।

+0

सर्वर साइड इवेंट्स वास्तव में मेरे प्रश्न का सबसे उपयुक्त उत्तर लगता है। एक बहुत ही रोचक गोलांग उदाहरण यहां पाया जा सकता है https://www.new-bamboo.co.uk/blog/2014/05/13/writing-a-server-sent-events-server-in-go/ –

+0

धन्यवाद जानकारी के उत्कृष्ट टुकड़े साझा करने के लिए। मैं HTTP2 धक्का के साथ एक ही भ्रम था। – lithiumlab

+0

क्या इसके साथ वेबस्केट अनुकरण करने के लिए HTTP/2 पूर्ण डुप्लेक्स के चारों ओर एक ढांचा बनाने की आवश्यकता है? – FrickeFresh

संबंधित मुद्दे