2012-08-01 8 views
7

मैं websocket और इसके आंतरिक कार्यान्वयन के बारे में अधिक जानने की कोशिश कर रहा हूं। लेकिन अभी भी कुछ चीजें समझ नहीं सकते हैं। मैंने गहराई से स्पष्टीकरण के लिए googling की कोशिश की, लेकिन उनमें से ज्यादातर सिर्फ उच्च स्तरीय अवलोकन देता है। बाद मेरी संदेह कर रहे हैंवेबसाइटसेट कनेक्शन सेटअप

1. मैं क्या पढ़ा के अनुसार, वेब सॉकेट सर्वर (सी #/सी ++ कार्यान्वयन) डिफ़ॉल्ट रूप से बंदरगाह 80 हालांकि हम किसी भी बंदरगाह का उपयोग कर सकते का उपयोग करता है, यह पसंद किया जाता है कि हम पोर्ट 80 का उपयोग के रूप में हम जीत गए कोई फ़ायरवॉल मुद्दे नहीं है। यदि ऐसा है, तो हम उसी पोर्ट (80) पर वेबसर्वर और वेब सॉकेट सर्वर दोनों को कैसे चला सकते हैं?

2. की है कि वेब सॉकेट सर्वर पोर्ट 81 पर चल रहा है मान लेते हैं और 80.

  1. तो जब ब्राउज़र प्रारंभिक हाथ मिलाना HTTP अनुरोध जारी वेबसर्वर बंदरगाह पर चल रहा है (अपग्रेड: WebSocket) , यह अनुरोध पोर्ट 81 को भेजा गया। ठीक है? यदि ऐसा है, तो यह अनुरोध (नीचे देखें) HTTP प्रोटोकॉल से कोई संबंध नहीं है। लेकिन फिर भी हम HTTP प्रोटोकॉल हेडर का उपयोग करते हैं। क्यूं कर?

     GET /mychat HTTP/1.1 
         Host: server.example.com 
         Upgrade: websocket 
         Connection: Upgrade 
         Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== 
         Sec-WebSocket-Protocol: chat 
         Sec-WebSocket-Version: 13 
         Origin: http://example.com 
    
  2. क्यों सहारे वे वर्तमान में एक सीधा टीसीपी/दिए गए पोर्ट के साथ IP कनेक्शन जारी करने के लिए सबसे ब्राउज़र में लागू ही WebSocket इंटरफ़ेस का उपयोग किसी HTTP सामान के बिना?

3. वहाँ किसी भी पैकेट आकार सीमा या डेटा/भेजे गए डेटा के लिए बफर सीमा है/ग्राहक/सर्वर से प्राप्त? यदि ऐसा है, तो क्या हमें डेटा फ्रेम करने और इसे स्वयं संभालने की आवश्यकता है?

4. क्या वेबसाईट सर्वर को हमेशा एक अलग सेवा/प्रक्रिया की आवश्यकता होती है? भविष्य में वेबसर्वर (आईआईएस, अपाचे) में प्रोसेस स्पेस के भीतर वेब सॉकेट सर्वर होस्ट करने के लिए समर्थन शामिल होगा?

+0

वास्तव में अच्छे प्रश्न! – GameScripting

+1

मुझे कहीं पढ़ना याद है कि विंडोज सर्वर का अगला संस्करण आईआईएस के तहत वेब सॉकेट का समर्थन करेगा। Http.sys http.sys के कार्यान्वयन के कारण WebSockets का समर्थन नहीं कर सकता है। अगर मुझे संदर्भ मिल जाए तो मैं इसे उत्तर में – JoshBerke

उत्तर

3
  1. एक HTTP संगत हाथ मिलाना आप अपने वेब सर्वर में एक WebSocket हैंडलर एकीकृत कर सकते हैं या सिर्फ वेबसर्वर आगे एक समर्पित WebSocket सर्वर से WebSocket कनेक्शन है का उपयोग करके।

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

  3. प्रोटोकॉल में संदेश आकार पर कोई सीमा नहीं है। एक संदेश को कई फ्रेम में विभाजित किया जा सकता है। फ्रेम आकार के लिए एक प्रोटोकॉल सीमा है लेकिन यह 2^64 बाइट्स है। क्लाइंट/सर्वर कार्यान्वयन के आधार पर वास्तविक फ्रेम आकार सीमा छोटी होगी। यदि आपके पास बहु-मेगाबाइट एकल संदेश हैं जिन्हें आप भेजना चाहते हैं तो आप क्रॉस-ब्राउज़र और क्रॉस-सर्वर समर्थन को अधिकतम करने के लिए छोटे संदेशों का उपयोग करने के लिए अपने एप्लिकेशन को बदलने पर विचार कर सकते हैं।

  4. वेबसॉकेट हैंडलिंग को निश्चित रूप से वेब सर्वर में एकीकृत किया जा सकता है और यह कार्य समूह द्वारा कल्पना की गई एक परिदृश्य थी।उदाहरण के लिए, pywebsocket पर विचार करें जो अपाचे में स्टैंडअलोन या mod_python मॉड्यूल दोनों चलाने के लिए डिज़ाइन किया गया है। एक और उदाहरण के रूप में, ASP.NET 4.5 and IIS 8 will have built-in support for WebSockets

+0

में छोड़ दूंगा, मुझे लगता है कि वेबस्केट कनेक्शन को वेबसाइकिल अग्रेषित करना अभी तक व्यावहारिक नहीं है। – SysAdmin

+0

@SysAdmin का मतलब है कि यह आपके लिए व्यावहारिक नहीं है? बहुत सारे लोग इसे सफलतापूर्वक कर रहे हैं। एक त्वरित खोज ने मुझे ये दिया: http://serverfault.com/questions/290121/configuring-apache2-to-proxy-websocket, http://stackoverflow.com/questions/2419346/can-nginx-be-used-as -ए-रिवर्स-प्रॉक्सी-फॉर-ए-बैकएंड-वेबस्केट-सर्वर, http://www.letseehere.com/reverse-proxy-web-sockets – kanaka

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