क्या HTML5 वेब ऐप्स को पीयर-टू-पीयर HTTP कनेक्शन बनाने की अनुमति देगा?


100

क्या एक वेब ऐप बनाना संभव है, जो केंद्रीय सर्वर की मदद से, उसी वेब ऐप के अन्य उपयोगकर्ताओं के साथ सीधा संबंध बना सके? मैं UDP छेद छिद्रण के समान एक प्रक्रिया की कल्पना कर रहा हूं।

मैंने HTML5 में नए WebSockets API के बारे में पढ़ा है, लेकिन ऐसा लगता है कि पूरी तरह से द्वैध कनेक्शन शुरू होने से पहले आपको WS- संगत सर्वर के साथ कनेक्शन शुरू करना चाहिए। मैं ग्राहकों के बीच प्रत्यक्ष संबंध बनाने की प्रक्रिया के बारे में moreso सोच रहा हूं, जिसमें एक सर्वर केवल प्रारंभिक हैंडशेक में शामिल हो रहा है ।

नोट: जावा एप्लेट की गिनती नहीं है। मुझे केवल मानक ब्राउज़र तकनीकों में दिलचस्पी है।


जवाबों:


109

बुद्धिमान अनुमानों के बजाय, यहाँ एक सूचित उत्तर दिया गया है:

HTML 5 को जावास्क्रिप्ट से सहकर्मी कनेक्शन की अनुमति देने की योजना है, लेकिन ये कनेक्शन रॉ टीसीपी नहीं होंगे।

पूर्ण युक्ति http://dev.w3.org/html5/websockets/ पर देखी जा सकती है

jrh

EDIT: सहकर्मी से सहकर्मी के विशिष्ट संदर्भ के लिए, इन लिंक की जाँच करें:

यह ध्यान रखना महत्वपूर्ण है कि क्षमताओं पर अभी भी बातचीत की जा रही है। "स्थानीय चैट" वेब एप्लिकेशन बनाने में सक्षम होना अच्छा होगा :)

jrh


45
+1 => "बुद्धिमान अनुमानों के बजाय, यहां एक सूचित उत्तर दिया गया है"
आयनो जी। स्टेन

2
क्या WebSocket किसी होस्ट से कनेक्ट करने की अनुमति देता है? मेरा मानना ​​है कि युक्ति केवल सर्वर कहती है।
हेग्मन

4
वेब सॉकेट अब HTML5 का हिस्सा नहीं है, लेकिन एक स्टैंडअलोन विनिर्देश है।
सर्गेई इलिंस्की

8
WebSockets सहकर्मी से सहकर्मी नहीं हैं - वे अभी भी सर्वर के लिए क्लाइंट हैं, और ब्राउज़र सर्वर को आधे से लागू नहीं करते हैं।
Alnitak

4
WebSockets सहकर्मी को सहकर्मी नहीं करते हैं, लेकिन एक और हालिया युक्ति, WebRTC, इसके लिए डिज़ाइन किया गया है।
एरिक मिल

29

अद्यतन 10/17/2012: यह कार्यक्षमता अब क्रोम स्थिर v22 में मौजूद है। क्रोम में इस कार्यक्षमता का उपयोग करने के लिए, किसी को क्रोम में दो झंडे सक्षम करने होंगे: // झंडे:

  • MediaStream सक्षम करें
  • PeerConnection सक्षम करें

फिर आप डेमो की कोशिश करने के लिए AppRTC डेमो पेज पर जा सकते हैं । वेबआरटीसी देखें - पीयर टू पीयर कार्यक्षमता और डिवाइस कैप्चर को सक्षम करने के लिए क्रोम की स्थापना के लिए अधिक विस्तृत निर्देशों के लिए डेमो पृष्ठ चलाना


अद्यतन: एरिकसन लैब्स के इंजीनियरों के पास एक WebKit बिल्ड में अवधारणा का एक प्रमाण है जो HTML5 पीयर टू पीयर कन्वर्सेशनल वीडियो करता है

उनके पास कार्रवाई में प्रौद्योगिकी के अपने ब्लॉग में प्रदर्शन हैं, साथ ही साथ तकनीक कैसे काम करेगी, इस पर चित्र और स्पष्टीकरण भी हैं।

वे इसे स्थिर करने और वेबकीट रिपॉजिटरी के लिए प्रतिबद्ध होने पर काम कर रहे हैं।


इससे पहले कि आप यह अनुमान लगाते हैं कि यह WebKit में कब तक होगा?
एलिस्टेयर

मुझे नहीं पता। मैं एरिकसन के साथ जांच करने का सुझाव देता हूं। लिंक मेरे जवाब में है। उनके मंचों पर जानकारी हो सकती है कि कब होगी।
jmort253

विशेष प्रति-ब्राउज़र कॉन्फिगर / फ्लैग सेटिंग्स की आवश्यकता एक कार्यशील वेब मानक युक्ति का हिस्सा होने के समान नहीं है। यदि यह HTML5, WebSockets, या WebRTC आउट-ऑफ़-द-बॉक्स में नहीं है, तो आप बिना हैक के पीयर-टू-पीयर नहीं कर सकते। सौभाग्य से ऐसा लगता है कि WebRTC सही दिशा में जा रहा है।
Beejor

11

हां आखिरकार।

इस लेखन (2017) के रूप में, WebRTC अब अधिकांश आधुनिक ब्राउज़रों का एक मानक हिस्सा है (उपयोग में उन में से लगभग 70%), और मल्टीमीडिया स्ट्रीमिंग, पीयर-टू-पीयर और होल-पंचिंग की अनुमति देता है।

डॉक्स, नमूना कोड, और WebRTC के लिए लाइव उदाहरण html5rocks.com पर देखे जा सकते हैं ।

Caniuse.com और html5rocks.com के अनुसार , निम्न ब्राउज़र WebRTC का समर्थन करते हैं:

पूर्ण समर्थन: एज 14, फ़ायरफ़ॉक्स 22, फ़ायरफ़ॉक्स एंड्रॉइड 55
आंशिक समर्थन: एंड्रॉइड ब्राउज़र 56, क्रोम 20, क्रोम एंड्रॉइड 29, एज 12, फ़ायरफ़ॉक्स 17, ओपेरा 18, ओपेरा एंड्रॉइड 20, ओपेरा मोबाइल 12, यूसी ब्राउज़र एंड्रॉइड 11.4
भविष्य का समर्थन ( Q3 2017): iOS 11 के लिए क्रोम, iOS 11 के लिए Safari 11 और OS X 10.11
कोई समर्थन नहीं: IE, IE मोबाइल, ओपेरा मिनी

WebRTC की संतृप्ति दर Apple उपकरणों पर सीमित है, क्योंकि Safari 11 अभी तक जारी नहीं हुआ है और इसके लिए iOS 11 या OS X 10.11 की आवश्यकता है। हालांकि पिछले अपग्रेड ट्रेंड से प्रोजेक्ट करते हुए, WebRTC को 2018 तक लगभग 75% iOS डिवाइस और 100% पर उपलब्ध होना चाहिए।


4

यह क्यों मुश्किल होगा इसके कई कारण हैं:

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

WebSockets को इन मुद्दों में से दूसरे को हल करने के लिए डिज़ाइन किया गया है, लेकिन (जानबूझकर, मुझे उम्मीद है) अन्य दो नहीं। जब वे HTML5 कल्पना में पीयर-टू-पीयर के बारे में बात करते हैं, तो वे सर्वर और क्लाइंट के बीच पूर्ण द्वैध संचार के बारे में बात कर रहे हैं, एक ग्राहक और दूसरे के बीच नहीं।

हालांकि, वेबसोकेट्स के शीर्ष पर एक उचित नेटवर्क स्टैक को लागू करना सरल होगा - इस प्रोविज़ो के साथ कि सभी संचार अभी भी सर्वर के माध्यम से करना होगा। मैंने इसे लंबे मतदान का उपयोग करते हुए देखा है (Uni पर मेरे एक मित्र ने लंबे मतदान का उपयोग करते हुए पूर्ण टीसीपी / आईपी स्टैक लिखा है)।


पी 2 पी क्लाइंट-सर्वर नहीं है; पूर्व साथियों के बीच ट्रैफ़िक चलता है, बाद वाला इसे सर्वर के माध्यम से एक या अधिक क्लाइंट तक ले जाता है। पी 2 पी का मुख्य लाभ यह है कि एक सर्वर एक मैचमेकर के रूप में कार्य कर सकता है जबकि ग्राहकों के बीच भारी ट्रैफ़िक जाता है (जो गोपनीयता और बैंडविड्थ के लिए एक वरदान है)।
बीजोर

0

मैं दूसरा harshath.jr: आप बहुत अच्छी तरह से प्रत्येक जुड़े एजेंट की निर्देशिका ("मूल" को उजागर करने के रूप में कार्य करने वाला सर्वर हो सकता है; योजना के रूप में योजना + मेजबान + पोर्ट के रूप में मसौदा-सार-मूल में , इस योजना या तो "डब्ल्यूएस" के साथ हो सकता है) या "Wss")। फिर आप पीयर-टू-पीयर वेबसॉकेट कनेक्शन आरंभ कर सकते हैं; एसओपी के लिए धन्यवाद के माध्यम से काम किया जा रहा CORS । बेशक, इसका मतलब है कि प्रत्येक एजेंट (यानी ब्राउज़र) को अपना खुद का वेबसर्केट सर्वर (आ ला ओपेरा यूनाइट) एम्बेड करना होगा।

इस बीच के समय में, इसे XMPP / IRC / etc-way: कोई सहकर्मी से सहकर्मी कनेक्शन नहीं करना चाहिए, लेकिन कनेक्टेड एजेंटों को संदेश पारित करने के लिए एक केंद्रीय सर्वर (या नेटवर्क!) के लिए WebSocket कनेक्शन (अंततः कुछ विशिष्ट WebSocket का उपयोग करके) subprotocol ")

संपादित करें: ध्यान दें कि यह सब वास्तव में एचटीएमएल 5 के दायरे से बाहर है (उन सभी चीजों को एक बार एचटीएमएल 5 का हिस्सा बनाया गया था, लेकिन अपने स्वयं के चश्मे में विभाजित किया गया है)


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.