WebRTC बनाम Websockets: यदि WebRTC वीडियो, ऑडियो और डेटा कर सकता है, तो मुझे Websockets की आवश्यकता क्यों है? [बन्द है]


220

इसलिए मैं एक चैट ऐप बनाना चाहता हूं जो वीडियो, ऑडियो और टेक्स्ट की अनुमति देगा। मैंने कुछ समय लगाकर वेबसोकेट्स और वेबआरटीसी में शोध करने का निर्णय लिया कि किसका उपयोग करना है। चूंकि WebRTC के साथ बहुत सारे वीडियो और ऑडियो ऐप हैं, यह एक उचित विकल्प की तरह लगता है, लेकिन क्या अन्य चीजें हैं जिन पर मुझे विचार करना चाहिए? अपने विचारों को निसंकोच साझा करें।

इस तरह की चीजें:

  • नए होने के कारण WebRTC केवल कुछ ब्राउज़रों पर उपलब्ध है, जबकि WebSockets अधिक ब्राउज़रों में लगता है।

  • स्केलेबिलिटी - Websockets सत्र के लिए एक सर्वर का उपयोग करता है और WebRTC P2p लगता है।

  • मल्टीप्लेक्सिंग / मल्टीपल चैटरूम - Google+ हैंगआउट में उपयोग किया जाता है, और मैं अभी भी डेमो ऐप्स देख रहा हूं कि कैसे लागू किया जाए।

  • सर्वर - वेबसोकेट को कई मशीनों में स्केल करने के लिए RedisSessionStore या RabbitMQ की आवश्यकता होती है।

जवाबों:


272

WebRTC को उच्च-प्रदर्शन, वीडियो, ऑडियो और मनमाने डेटा के उच्च गुणवत्ता वाले संचार के लिए डिज़ाइन किया गया है। दूसरे शब्दों में, उन ऐप्स के लिए, जो आप वर्णन करते हैं।

WebRTC ऐप्स को एक ऐसी सेवा की आवश्यकता होती है जिसके माध्यम से वे नेटवर्क और मीडिया मेटाडेटा का आदान-प्रदान कर सकते हैं, जिसे सिग्नलिंग के रूप में जाना जाता है। हालांकि, एक बार सिग्नलिंग हो जाने के बाद, वीडियो / ऑडियो / डेटा को क्लाइंट के बीच सीधे स्ट्रीम किया जाता है, एक मध्यस्थ सर्वर के माध्यम से स्ट्रीमिंग की प्रदर्शन लागत से बचा जाता है।

दूसरी ओर WebSocket क्लाइंट और सर्वर के बीच द्वि-दिशात्मक संचार के लिए डिज़ाइन किया गया है। वेबसॉकेट पर ऑडियो और वीडियो स्ट्रीम करना संभव है ( उदाहरण के लिए यहां देखें ), लेकिन तकनीक और एपीआई स्वाभाविक रूप से उस तरह से कुशल, मजबूत स्ट्रीमिंग के लिए डिज़ाइन नहीं किए गए हैं जो वेबआरटीसी है।

जैसा कि अन्य उत्तरों में कहा गया है, सिग्नलिंग के लिए WebSocket का उपयोग किया जा सकता है।

मैं वेबआरटीसी संसाधनों की एक सूची बनाए रखता हूं : वेबआरटीसी के बारे में 2013 के Google I / O प्रस्तुति को देखकर आपको दृढ़ता से सलाह देते हैं ।


2
विस्तृत उत्तर के लिए धन्यवाद ... लगभग दो साल बाद कोई अपडेट?
Crashalot

2
मैं ऊपर दिए गए संसाधनों पर एक नज़र डालने की सलाह देता हूं - g.co/webrtc देखें ।
सैम डटन

3
इसके अलावा न कि (मेरा मानना है कि) WebRTC तो यह हो सकता है बहुत तेजी से आप कुछ पैकेट क्षति कोई आपत्ति नहीं है आदि (यानी चल रहा है, पैकेट आदेश और सामग्री के बारे में कम सख्त होने के लिए विन्यस्त किया जा सकता नवीनतम डेटा होने से ज्यादा महत्वपूर्ण है सभी डेटा): stackoverflow.com/a/13051771/993683

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

1
@SamDutton, निश्चित रूप से सर्वर एक सहकर्मी के रूप में दोगुना हो सकता है और स्वयं RTCDataChannel के एक छोर का उपयोग कर सकता है? जैसे कि आधुनिक वेब प्रोग्रामिंग के लिए मुझे वेबसोकेट का कोई फायदा नहीं दिखता है? चूंकि RTCDataChannel UDP / वास्तविक समय है?
पैशियर

71

WebSockets:

  • सभी आधुनिक ब्राउज़रों और यहां तक ​​कि वेब ब्राउज़र-सॉकेट-जेएस पॉलीसिल का उपयोग करके विरासत ब्राउज़र के समर्थन के साथ IETF मानक (6455)।

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

  • बहुत सरल ब्राउज़र एपीआई। मूल रूप से कॉलबैक के एक जोड़े के साथ एक निर्माता।

  • क्लाइंट / ब्राउज़र केवल सर्वर के लिए।

  • केवल विश्वसनीय, इन-ऑर्डर ट्रांसपोर्ट का समर्थन करता है क्योंकि यह TCP पर बनाया गया है। इसका मतलब है कि पैकेट ड्रॉप्स बाद के सभी पैकेटों में देरी कर सकते हैं।

WebRTC:

  • बस क्रोम और फ़ायरफ़ॉक्स द्वारा समर्थित होने की शुरुआत। MS ने असंगत संस्करण का प्रस्ताव दिया है। डेटाचैन घटक अभी तक फ़ायरफ़ॉक्स और क्रोम के बीच संगत नहीं है।

  • वेबआरटीसी आदर्श परिस्थितियों में ब्राउज़र के लिए ब्राउज़र है, लेकिन फिर भी कनेक्शन सेट करने के लिए लगभग हमेशा एक सिग्नलिंग सर्वर की आवश्यकता होती है। अभी सबसे आम सिग्नलिंग सर्वर समाधान वेबस्केट्स का उपयोग करते हैं।

  • यदि कनेक्शन इन-ऑर्डर और / या विश्वसनीय है, तो ट्रांसपोर्ट लेयर एप्लिकेशन को चुनने में सक्षम है।

  • जटिल और बहुस्तरीय ब्राउज़र एपीआई। एक सरल API प्रदान करने के लिए JS लिबास हैं लेकिन ये युवा हैं और तेजी से बदल रहे हैं (केवल WebRTC की तरह)।


4
WebRTC ब्राउज़र का समर्थन अब तक बहुत बेहतर है। caniuse.com/#search=WebRTC
tuxayo

58

Websockets TCP प्रोटोकॉल का उपयोग करते हैं।

WebRTC मुख्य रूप से यूडीपी है।

इस प्रकार Websocket के बजाय WebRTC का उपयोग करने का मुख्य कारण विलंबता है। Websocket स्ट्रीमिंग के साथ आपके पास कम विलंबता के साथ या तो उच्च विलंबता या तड़का हुआ प्लेबैक होगा। WebRTC के साथ आप कम विलंबता और सुगम प्लेबैक प्राप्त कर सकते हैं जो वीओआईपी संचार के लिए महत्वपूर्ण सामग्री है।

बस एक नेटवर्क हानि के साथ इन प्रौद्योगिकी का परीक्षण करने का प्रयास करें, अर्थात 2%। आप वेबसोकेट स्ट्रीम में उच्च विलंब देखेंगे।


2
रुचि रखने वालों के लिए, इस सामान को यहाँ और समझाया गया है: stackoverflow.com/a/13051771/993683

39

webRTC या वेबस्केट? दोनों का उपयोग क्यों नहीं

वीडियो / ऑडियो / टेक्स्ट चैट का निर्माण करते समय, वेबआरटीसी निश्चित रूप से एक अच्छा विकल्प है क्योंकि यह सहकर्मी से सहकर्मी प्रौद्योगिकी का उपयोग करता है और एक बार कनेक्शन चालू होने और चलने के बाद, आपको एक सर्वर के माध्यम से संचार पारित करने की आवश्यकता नहीं है (जब तक कि TURN का उपयोग न करें)।

वेबआरटीसी संचार स्थापित करते समय आपको किसी प्रकार के सिग्नलिंग तंत्र को शामिल करना होगा। Websockets यहां एक अच्छा विकल्प हो सकता है, लेकिन webRTC वीडियो / ऑडियो / पाठ जानकारी के लिए जाने का तरीका है। चैट रूम सिग्नलिंग में पूरा किया जाता है।

लेकिन, जैसा कि आप उल्लेख करते हैं, प्रत्येक ब्राउज़र वेबआरटीसी का समर्थन नहीं करता है, इसलिए वेबसोकेट कभी-कभी उन ब्राउज़रों के लिए एक अच्छा कमबैक हो सकता है।


10

वेबसैट और वीब्रेट की तुलना करना अनुचित है।

Websocket TCP के शीर्ष पर आधारित है। पैकेट की सीमा tcp के विपरीत एक वेबसोकेट पैकेट की हेडर सूचना से पता लगाया जा सकता है।

आमतौर पर, वेबब्रेट वेबसोकेट का उपयोग करता है। Webrtc के लिए सिग्नलिंग परिभाषित नहीं है, यह सेवा प्रदाता तक है कि वह किस तरह के सिग्नल का उपयोग करना चाहता है। यह SIP, HTTP, JSON या कोई टेक्स्ट / बाइनरी संदेश हो सकता है।

सिग्नलिंग संदेशों को वेबसोकेट का उपयोग करके भेजा / प्राप्त किया जा सकता है।


10

सुरक्षा एक ऐसा पहलू है जिससे आप चूक गए हैं।

Websockets के साथ डेटा को एक केंद्रीय वेबसर्वर से गुजरना पड़ता है जो आमतौर पर सभी ट्रैफ़िक को देखता है और इसे एक्सेस कर सकता है।

WebRTC के साथ डेटा एंड-टू-एंड एनक्रिप्टेड है और एक सर्वर से नहीं गुजरता है (कभी-कभी TURN सर्वर को छोड़कर) की आवश्यकता होती है, लेकिन उनके पास आगे आने वाले संदेशों के शरीर तक कोई पहुंच नहीं होती है।

आपके आवेदन के आधार पर यह बात हो भी सकती है और नहीं भी।

यदि आप बड़ी मात्रा में डेटा भेज रहे हैं, तो वेबआरटीसी की पी 2 पी वास्तुकला के कारण क्लाउड बैंडविड्थ की लागत में बचत भी विचार करने योग्य हो सकती है।


1
यह गलत धारणा है कि WebRTC कड़ाई से सहकर्मी से सहकर्मी प्रोटोकॉल है। यह उद्योग में सर्वर-आधारित वीओआइपी विकल्प के रूप में व्यापक उपयोग को देखना शुरू कर रहा है।
फोटोसेफेरे

इसके अलावा, जब हम WebSocket को WebRTC के मीडिया प्रवाह के रूप में कार्यान्वित करते हैं, तो यह SIP का उपयोग करता है और SIP एक सादा पाठ प्रोटोकॉल है जिसका उपयोग वीओआईपी के लिए किया गया है।
एम। रुस्तमी

6

वीब्रट पीयर टू पीयर कनेक्शन का एक हिस्सा है। हम सभी जानते हैं कि पीयर टू पीयर कनेक्शन बनाने से पहले, पीयर टू पीयर कनेक्शन स्थापित करने के लिए हैंडशेकिंग प्रक्रिया की आवश्यकता होती है। और वेबसोकेट हाथ मिलाने की प्रक्रिया की भूमिका निभाते हैं।


3

Websocket और WebRTC का उपयोग एक साथ किया जा सकता है, Websocket, WebRTC के सिग्नल चैनल के रूप में, और webrtc एक वीडियो / ऑडियो / टेक्स्ट चैनल है, WebRTC UDP में TURN रिले, TURN रिले समर्थन TCP HTTP भी HTTPS में भी हो सकता है। कई परियोजनाएं Websocket और WebRTC का एक साथ उपयोग करती हैं।

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