WebRTC

2012-12-20 34 views
6

इस के लिए सेवा परत के रूप में SignalR का उपयोग another question मैंने पूछा के लिए एक अनुवर्ती है, लेकिन अधिक सटीक जानकारी के साथ।WebRTC

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

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

समस्या यह है कि XSockets साइट लगातार काम करता है, जबकि SignalR साइट में विफल रहता है (ज्यादातर लगातार, हालांकि पूरी तरह से नहीं) है। आमतौर पर यह peerConnection.setLocalDescription() पर कॉल करते समय विफल रहता है, लेकिन यह चुपचाप विफल भी हो सकता है; या यह (कभी-कभी) भी काम कर सकता है।

आप यहाँ ऑपरेशन में दो अलग-अलग पृष्ठों देख सकते हैं:

XSockets साइट: http://xsockets.demo.alanta.com/

SignalR साइट: http://signalr.demo.alanta.com/

दोनों के लिए स्रोत कोड https://bitbucket.org/smithkl42/xsockets.webrtc पर है, पर XSockets संस्करण के साथ xsockets शाखा, और signalr शाखा पर सिग्नलआर संस्करण।

तो मेरे सवाल है: किसी को भी किसी भी कारण से क्यों एक की बजाय एक संकेत परत का उपयोग करने के लिए WebRTC कोई फर्क होगा पता है? उदाहरण के लिए, क्या एक या दूसरे एएनएसआई के बजाय यूनिकोड स्ट्रिंग वापस भेजता है? या मैंने समस्या का गलत निदान किया है, और असली अंतर कहीं और है?

उत्तर

2

यह पता चल। यह पता चला है कि सिग्नलर 1.0 आरसी 1 में एक बग है जो किसी स्ट्रिंग में किसी स्ट्रिंग में "+" को बदल देता है। एसडीपी में लाइनों है कि इस तरह देखा तो:

a=ice-pwd:qZFVvgfnSso1b8UV1SUDd2+z

इस में बदल रहे थे:

a=ice-pwd:qZFVvgfnSso1b8UV1SUDd2 z

लेकिन क्योंकि हर एसडीपी एक महत्वपूर्ण लाइन पर उस में एक "+" था , कभी-कभी यह काम करेगा। सब कुछ समझाया।

बग अच्छा SignalR (https://github.com/SignalR/SignalR/issues/1194 देखें) पर काम कर रहे लोगों को सूचित किया गया है, और इस बीच में, एक सरल encodeURIComponent() और decodeURIComponent() प्रश्न में तार के आसपास तय की।

+0

केन, आप केवल या वीडियो/ऑडियो डाटा परिवहन के लिए संकेत के लिए SignalR का उपयोग किया? –

+0

@ElanHasson - केवल सिग्नलिंग के लिए। वेबआरटीसी जटिल है, और अपूर्ण रूप से कार्यान्वित (मूल रूप से केवल फ़ायरफ़ॉक्स और क्रोम, कुछ इंटरऑपरेबिलिटी मुद्दों के साथ), लेकिन रीयलटाइम वीडियो/ऑडियो डेटा के लिए पसंदीदा परिवहन बनी हुई है। मैंने ऑडियो/वीडियो वितरित करने के लिए वेबसाकेट्स का उपयोग करने की कोशिश नहीं की है, लेकिन मुझे इसके डिजाइन और सामान्य कार्यान्वयन के बारे में पता है, मुझे लगता है कि आपको कुछ वास्तविक समस्याएं होंगी। और मुझे लगता है कि लंबे मतदान, सर्वर साइड इवेंट्स और अन्य समान दृष्टिकोण एक गैर-स्टार्टर होंगे। –

+1

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