2009-09-20 17 views
11

मैंने एक प्रासंगिक प्रश्न here से HTML फ़ाइल विनिर्देशन में वेब सॉकेट इंटरफ़ेस के बारे में सुना है।
यह बहुत ही आशाजनक लगता है!
मुझे समझ में नहीं आता कि यह कैसे काम करता है यह अभी भी HTTP प्रोटोकॉल का उपयोग करता है और इसके आसपास काम करता है या यह टीसीपी सॉकेट की तरह कुछ काम करता है?एचटीएमएल 5 वेब सॉकेट इंटरफ़ेस कैसे काम करता है?

उत्तर

2

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

+0

पिछली बार जब मैंने वेबसॉकेट प्रोटोकॉल स्पेक देखा, तो HTTP पर स्वचालित रूप से डाउनग्रेड करने का कोई तरीका नहीं था। वह कहाँ जोड़ा गया था? – EricLaw

+0

वेबस्केट्स (प्रयुक्त?) समर्थन एनटीपी, 80 के दशक में एक प्रोटोकॉल बंद हो गया। – Christian

7

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

आरंभिक वेबसाकेट हैंडशेक HTTP की तरह दिखता है। यह मौजूदा HTTP प्रॉक्सी और वेब सर्वर के लिए आने वाले वेबसाकेट कनेक्शन का समर्थन करने के लिए आसान बना देगा और उनके साथ सही काम करेगा (यानी उन्हें असली हैंडलर पर अग्रेषित करना)। लेकिन एक सफल हैंडशेक के बाद (जिसमें मूल जानकारी का आदान-प्रदान और सत्यापन शामिल है), कनेक्शन खुला रहता है और द्विपक्षीय बन जाता है।

डेटा का प्रत्येक पैकेट (चाहे सर्वर से या क्लाइंट से भेजा गया हो) एक '\ x00' (शून्य बाइट) से शुरू होता है, उसके बाद यूटीएफ -8 एन्कोडेड डेटा होता है और एक '\ xff' (सभी बाइट ')।

वर्तमान मसौदा मानक यहाँ है: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76

तुम भी मिल सकती है wsproxy noVNC में शामिल एक संदर्भ के रूप में उपयोगी हो सकता है। wsproxy टीसीपी सॉकेट प्रॉक्सी के लिए एक सामान्य वेबसाकेट है। नोवीएनसी के साथ wsproxy का सी और पायथन संस्करण दोनों शामिल हैं।

http://github.com/kanaka/noVNC/tree/master/utils/

22

एक तरह से, यह दोनों एक HTTP अनुरोध और एक नियमित TCP सॉकेट है।

टीसीपी पर एक सामान्य HTTP अनुरोध का उपयोग कर एक वेबस्केट कनेक्शन का अनुरोध किया जाता है। कुछ शीर्षलेख भेजे गए हैं जो वेबसर्वर को इंगित करते हैं कि यह एक वेबसाइकिल है जिसे अनुरोध किया जा रहा है और सामान्य पृष्ठ नहीं, लेकिन मूल रूप से यह केवल एक HTTP अनुरोध है।

सर्वर से प्रतिक्रिया भेजी जाने के बाद, कनेक्शन अपग्रेड किया गया है। यही है, HTTP के लिए उपयोग किया जा रहा टीसीपी कनेक्शन उच्च कॉलिंग के लिए अपहरण कर लिया गया है: बिडरेक्शनल, रीयलटाइम डेटा ट्रांसफर।

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

+0

प्रश्न: क्या यह बिल्कुल ओपनिंग http अनुरोध की तरह है और इसे खुला रखता है? (धूमकेतु लंबे मतदान की तरह ...)? या यह कुछ अलग है –

+0

@ रॉयनामिर, हां, बिल्कुल वही, कुछ शीर्षलेख दें या लें, सिवाय इसके कि आपको हर बार एक नया कनेक्शन खोलना या प्राप्त करना नहीं है। –

+0

धन्यवाद। तो यह वास्तव में असली धक्का करता है .... सही? (और अनुरोध का जवाब नहीं देता ...) –

0

ऐसी स्थिति में सर्वर की भूमिका आता है जब: (। 2 तरह कॉम)

एचटीएमएल 5, WebSocket एक चिन्ह की तरह में नहीं वॉकी-talky। HTTP प्रोटोकॉल वेबसाइकिल प्रोटोकॉल में अपग्रेड किया गया। (wss:// from ws://) सर्वर को डुप्लेक्स चैनल खोलने में सक्षम होना चाहिए और इसलिए डुप्लेक्स संचार से सहमत होना चाहिए। कृपया इस लिंक के माध्यम से भी जाएं: http://www.html5rocks.com/en/tutorials/websockets/basics/

धन्यवाद।

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