मैं ब्राउज़र से ब्राउज़र (सहकर्मी से सहकर्मी) कनेक्शन कैसे बना सकता हूं? [बन्द है]


84

मैं ग्राहक की ओर से HTML5 , CSS और जावास्क्रिप्ट का उपयोग करके एक वेबसाइट कैसे लिख सकता हूं जो पेज लोड होने के बाद क्लाइंट ब्राउज़र के बीच प्रत्यक्ष tcp / ip कनेक्शन की अनुमति देगा ।

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

मैंने इस विषय पर पिछले पोस्ट पढ़े थे लेकिन कोई भी काम करने वाला समाधान / उदाहरण उपलब्ध नहीं थे जो मुझे मिल सके। क्या मैं ग्राहकों के बीच सीधा संबंध सिल्वरलाइट, जावा या फ्लैश जैसे प्लगइन्स का उपयोग करके बनाया जा सकता है।

क्या कोई ऐसा उपाय है जिसमें प्लगइन्स की आवश्यकता न हो? मैं केवल जावास्क्रिप्ट का उपयोग करना चाहूंगा।


3
सिग्नलिंग सर्वर के बिना WebRTC सहकर्मी कनेक्शन: blog.printf.net/articles/2013/05/17/…
danijar

1
इस क्षेत्र में कुछ कर्षण के साथ एक परियोजना PeerJS भी देखें , जिसमें अपेक्षाकृत सभ्य ब्राउज़र समर्थन है
बोअज

1
सबसे सरल तरीका है कैंटरप्ले .io और AJAX कॉल का उपयोग करना। यह तेज है, 50ms से कम है।
जोनास

जवाबों:


126

Stackoverflow पर यहाँ ब्राउज़रों में P2P कनेक्शन के बारे में कई विषय हैं:

  1. क्या HTML5 वेब ऐप्स को पीयर-टू-पीयर HTTP कनेक्शन बनाने की अनुमति देगा?
  2. ब्राउज़र में पी 2 पी करने के लिए कौन सी तकनीकें उपलब्ध हैं?
  3. क्या HTML5 सहकर्मी से सहकर्मी का समर्थन करता है (और न केवल WebSockets)
  4. क्या बिना किसी सर्वर (पी 2 पी) का उपयोग किए बिना एचटीएमएल 5 वेबसैट 2 क्लाइंट (ब्राउज़र) को सीधे कनेक्ट कर सकता है
  5. क्या वेब ब्राउजर में पीयर-टू-पीयर कनेक्शन बनाना संभव है?
  6. क्या वेबसोकेट पी 2 पी (ब्राउज़र से ब्राउज़र) संचार के लिए अनुमति देता है?
  7. HTML 5 सहकर्मी से सहकर्मी वीडियो संभावनाएँ?
  8. क्या WebRTC अभी तक किसी भी ब्राउज़र में लागू किया गया है?

जैसा कि अधिकांश विषयों में उल्लेख किया गया है, दोनों 2008 एचटीएमएल 5 वर्किंग ड्राफ्ट में एक अनुभाग "पीयर-टू-पीयर कनेक्शन" था:

के बाद से W3C कार्यकारी ड्राफ्ट 12 फरवरी 2009 अनुभाग "पीयर-टू-पीयर कनेक्शन" गायब हो गया। लेकिन यह पी 2 पी कनेक्शन नहीं गया है। यह WebRTC (रीयल-टाइम संचार) विनिर्देशों के भीतर PeerConnection नाम के तहत वापस आ गया है:

31 अक्टूबर 2011 के बाद से, डब्ल्यू 3 सी एडिटर का ड्राफ्ट एक आधिकारिक वर्किंग ड्राफ्ट है:

PeerConnection (UDP आधारित) का एकमात्र कार्यान्वयन एरिक्सन लैब (मई 2011) द्वारा संशोधित WebKit में मौजूद है, जो काफी अच्छा काम कर रहा है। कुछ पैच अब WebKit में हैं (अक्टूबर 2011 - नीचे अपडेट देखें!):

इसके अतिरिक्त, WebRTC पहल Google, मोज़िला और ओपेरा द्वारा एक परियोजना है। इस प्रकार, वे PeerConnection पर विनिर्देश जारी रख रहे हैं:

संभवतः Chrome (WebKit का उपयोग करता है) PeerConnection के साथ WebRTC का समर्थन करने वाला पहला प्रमुख ब्राउज़र होगा:

18 जनवरी 2012 से, Chrome वेबआरटीसी को भी समर्थन दे रहा है । इसका उपयोग करके देव चैनल (विंडोज, ओएसएक्स, लिनक्स) और कैनरी बिल्ड (विंडोज और ओएसएक्स) में इसका उपयोग किया जा सकता हैchrome://flags । यह केवल MediaStreamवीडियो और ऑडियो की तरह ही सपोर्ट करता है और इसे कई डेमो के साथ टेस्ट किया जा सकता है । String/ ArrayBuffer/ ... जैसे एप्लिकेशन डेटा स्थानांतरित करना अब तक समर्थित नहीं है।

के बाद से 16 वीं मार्च 2012, WebRTC संपादक का मसौदा एक अलग करती है "पीयर-टू-पीयर डेटा API" भेजने के लिए और सामान्य आवेदन डेटा (प्राप्त करने के लिए String, ArrayBufferऔर Blob)। क्रोमियम जल्द ही (10 अप्रैल 2012) डेटा एपीआई को लागू करना चाहता है

3 अप्रैल को, मोज़िला ने फ़ायरफ़ॉक्स के लिए वेबआरटीसी पर पहला काम करने वाला उदाहरण प्रकाशित किया ।

DataChannel को फ्लैग के पीछे Chrome के संस्करण 25 के लिए नियोजित किया गया है, इस बीच इसे फ़ायरफ़ॉक्स नाइटली / ऑरोरा (12 दिसंबर 2012) में परीक्षण किया जा सकता है:

2018: डेटाचैनल्स अभी भी प्रयोगात्मक हैं, लेकिन क्रोम और फ़ायरफ़ॉक्स के वर्तमान संस्करणों में उपलब्ध हैं:


11
यह यहां 2014 है, क्या आप हाल की प्रगति के साथ अपने उत्कृष्ट पोस्ट को अपडेट कर सकते हैं?
myroslav

1
@myroslav webrtc.org/interop शुरू करने के लिए एक अच्छी जगह है। अब तक फ़ायरफ़ॉक्स, क्रोम और ओपेरा पूर्ण समर्थन देते हैं और एडेप्टरेट एडेप्टर के साथ हस्तक्षेप कर सकते हैं।
msemelman

1
मैं इसे जल्द ही करूंगा!
डेनिस

2
यह 2016 में यहां ऑस्ट्रेलिया में है। क्या हमारे पास ब्राउज़र सहकर्मी से सहकर्मी के लिए नवीनतम लिंक हो सकते हैं?
गणेश कृष्णन

1
हाँ, उस अद्यतन के बारे में कैसे?
obskyr

6

मुझे आपको निराश करना होगा - यह वर्तमान में सिर्फ जावास्क्रिप्ट के साथ संभव नहीं है। Websockets (और Socket.IO) क्लाइंट और सर्वर के बीच सॉकेट-जैसे कनेक्शन की अनुमति देता है, लेकिन क्लाइंट के बीच नहीं। आपका विकल्प एक प्लगइन है - यह फ्लैश, सिल्वरलाइट, जावा या कस्टम-मेड हो।

आप जो कर सकते हैं, वह सॉकेट.आईओ का उपयोग करें और एक साधारण प्रॉक्सी सर्वर लिखकर उसका अनुकरण करें।


क्या आप निश्चित हैं कि WebSocket 2 ब्राउज़रों के बीच प्रत्यक्ष P2p की अनुमति नहीं देता है? विकिपीडिया पर जो कहता है उससे ऐसा लगता है कि यह हो सकता है: "वेबसकेट एक ट्रांसमिशन ट्रांसमिशन प्रोटोकॉल (टीसीपी) सॉकेट के ऊपर द्वि-दिशात्मक, पूर्ण-द्वैध संचार चैनलों के लिए प्रदान करने वाली एक तकनीक है। इसे वेब ब्राउज़र और वेब में लागू करने के लिए डिज़ाइन किया गया है। सर्वर, लेकिन इसका उपयोग किसी भी क्लाइंट या सर्वर एप्लिकेशन द्वारा किया जा सकता है। "
रेज़वान फ्लवियस पांडा

5
यदि आप ब्राउज़र LISTEN/ सर्वर के रूप में कार्य नहीं कर सकते हैं तो समस्या का समाधान किया जाएगा । आप किसी भी सर्वर से पूर्ण-द्वैध में संचार कर पाएंगे, लेकिन आपके उपभोक्ता सर्वर नहीं बन सकते। इसके अतिरिक्त, यदि आप कर सकते हैं तो आप फायरवॉल के साथ एक लाख मुद्दों में भाग लेंगे। एमिल का समाधान बेहतर काम करेगा, हालांकि यह धीमी है।
घीस

तकनीकी रूप से, वेबसोकेट का उपयोग कहीं भी किया जा सकता है। लेकिन ब्राउज़रों में, सुरक्षा बाधाओं के कारण ऐसा नहीं होगा। घियों ने उसे समझाया। इसके अलावा, ध्यान दें कि यह समाधान संभवतः तेज होगा , क्योंकि आमतौर पर सर्वर को बड़ी बैंडविड्थ क्षमता वाले स्थानों में रखा जाता है, इसलिए आपका सर्वर 100 क्लाइंट को ठीक से संभाल लेगा, जबकि असली पी 2 पी का उपयोग करते हुए आप उपयोगकर्ताओं को बहुत जल्दी संतृप्त कर देंगे।
एमिल इवानोव

@ इमिल इवानोव: यह सच है कि आप क्या कह रहे हैं लेकिन अगर यह सिर्फ 1to1 कनेक्शन है तो यह तेज होना चाहिए।
रज़्ज़वान फ्लावियस पांडा

3

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

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