2012-09-09 21 views
6

मैं जावास्क्रिप्ट में एक डीएलएनए (अपनिप) क्लाइंट लिखने की योजना बना रहा हूं। मैं जानना चाहता हूं कि यह पहली जगह में संभव है या नहीं।जावास्क्रिप्ट: डीएलएनए क्लाइंट

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

मुझे बस सही दिशा में एक प्रोड की आवश्यकता है।

धन्यवाद! :)

+3

पहले तुम अनुसंधान करने के लिए क्या DLNA है की जरूरत है, तो यह टूट यह व्यक्तिगत आवश्यकताओं है, तो देखें कि क्या वह जावास्क्रिप्ट के साथ संभव है। मेरा अनुमान है 'नहीं।' लेकिन मुझे यकीन नहीं है। –

+0

सक्रिय एक्स के माध्यम से संभावित रूप से सुलभ है जो जावास्क्रिप्ट नहीं है – mplungjan

उत्तर

12

यूपीएनपी मंच से docs bundle में यूपीएनपी डिवाइस आर्किटेक्चर दस्तावेज़ शुरू करने के लिए सबसे अच्छी जगह है। यह प्रोटोकॉल को कई क्षेत्रों में विभाजित करता है:

  • डिस्कवरी। इसके लिए मल्टीकास्ट यूडीपी पैकेट भेजने और यूनिकास्ट यूडीपी प्राप्त करने की क्षमता की आवश्यकता है। आप जावास्क्रिप्ट से ऐसा नहीं कर सकते हैं, इसलिए यदि आप किसी नेटवर्क को खोजना चाहते हैं और उस पर पाए गए किसी भी डिवाइस को नियंत्रित करने की पेशकश करते हैं तो इस हिस्से को कवर करने के लिए मूल सहायक ऐप की आवश्यकता होगी। वैकल्पिक रूप से, यदि आप किसी भी तरह से पहले से ही अपने लक्षित डिवाइस के पते को जानते हैं तो आप इस सेक्शन को छोड़ सकते हैं।
  • विवरण। किसी डिवाइस के लिए पता देखते हुए, अपनी क्षमताओं का एक एक्सएमएल अवलोकन प्राप्त करें (http प्राप्त करें)। आप जावास्क्रिप्ट से आसानी से ऐसा कर सकते हैं।
  • नियंत्रण। दिए गए कार्यों को करने के लिए किसी दिए गए डिवाइस को निर्देश दें। Http पोस्ट और साबुन का उपयोग करके कार्यान्वित किया गया। आप जावास्क्रिप्ट से आसानी से ऐसा कर सकते हैं।
  • इवेंटिंग। डिवाइस स्थिति में बदलावों के बारे में सूचित करने के लिए एक तंत्र। यह आवश्यक है कि आप एक टीसीपी सर्वर चलाएं ताकि जावास्क्रिप्ट से नहीं किया जा सके। सौभाग्य से, यह अक्सर वैकल्पिक होता है क्योंकि अधिकांश डिवाइस सेवाओं को क्लाइंट को स्टेट गेटर्स को इवेंटिंग के विकल्प के रूप में मतदान करने की अनुमति देने के लिए डिज़ाइन किया गया है। तो, आप इसे जावास्क्रिप्ट से कर सकते हैं, यद्यपि आपका ऐप देशी से कम कुशल होगा।
  • प्रस्तुति। कुछ डिवाइस एक वेब ऐप प्रदान करते हैं जो उनके नियंत्रण की अनुमति देता है। यह ब्राउज़र में होस्ट किया जाता है, इसलिए जावास्क्रिप्ट का उपयोग करेगा और यह एक अच्छा उदाहरण है कि जिस तरह का नियंत्रण ऐप आप लिखना चाहते हैं वह संभव है।

संक्षेप में, एक जावास्क्रिप्ट यूपीएनपी क्लाइंट संभव है यदि आप डिवाइस खोज को संभालने के लिए मूल कोड का उपयोग कर सकते हैं। यदि आप इसे आजमाने का निर्णय लेते हैं, तो खुले स्रोत यूपीएनपी स्टैक आपके लिए खोज के अधिकांश कार्यों को संभालने के लिए मौजूद हैं। यूनिवर्सल प्लग के साथ संवाद स्थापित करने के लिए ऐसा JavaScript API एंड प्ले (UPnP) W3C नेटवर्क सेवा खोज एपीआई

https://github.com/rexboy7/plug.play.js

और ssdp.js के माध्यम से प्राप्त सेवाएं -

+0

मेरे व्यक्तिगत अनुभव से, वास्तविक दुनिया के उपकरणों (कम से कम मीडिया प्रस्तुतकर्ता) के लिए भरोसा करना बेहतर नहीं है। यूपीएनपी स्पेक द्वारा इवेंटिंग को कुछ मूल्यों के लिए भी अक्षम कर दिया गया है, जो उम्मीदवारों के पास उच्च क्षमता और/या डेटा की मात्रा है, जैसे AVTransport.RelativeTimePosition। लेकिन HTTPMU (यूडीपी पर मल्टीकास्ट HTTP) की आवश्यकता खड़ी है। व्यापक अवलोकन के लिए +1। –

+0

वाह ... मैं आपको धन्यवाद नहीं दे सकता! इसने मुझे यूपीएनपी के लिए वास्तव में एक महान अंतर्दृष्टि दी। आपके विस्तृत स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। :) मैं जल्द ही इस परियोजना पर काम शुरू कर दूंगा। :) – wiseindy

+0

मुझे नहीं लगता कि ब्राउज़र में जावास्क्रिप्ट से नियंत्रण हो सकता है। यह एक सीओआरएस अनुरोध होगा और जब तक इसे अपनाने के लिए अपनिप सर्वर कॉन्फ़िगर नहीं किया जाता है, तो यह असफल हो जाता है। नोड टर्मिनल के माध्यम से हालांकि यह आसानी से काम कर सकता है। – arjun

4

Plug.Play.js पर एक नजर डालें - (सिंपल सर्विस डिस्कवरी प्रोटोकॉल) एक नेटवर्क सेवा खोज एपीआई W3C कच्चे सॉकेट API

https://github.com/schien/ssdp.js

और यहाँ के आधार पर कार्यान्वयन एक डीएल का एक नमूना कार्यान्वयन है एनए क्लाइंट उपरोक्त का उपयोग कर: https://github.com/mozilla-b2g/gaia/tree/master/tv_apps/dlna-player

0

संपादित करें: फ़ायरफ़ॉक्स ओएस के आधार पर।

इस विषय के बारे में और एंड्रे फिडलर के उत्तर पर आधारित मैंने पाया कि पुस्तकालयों ने पोस्ट किया है जो एमडीएन से UDPSocket पर रहते हैं।

मुख्य पृष्ठ में आप खोज उदाहरण देख सकते हैं:

var SSDP_PORT = 1900; 
var SSDP_ADDRESS = "239.255.255.250"; 
var SSDP_DISCOVER_MX = 2; 
var SEARCH_TARGET = "urn:schemas-upnp-org:service:ContentDirectory:1"; 

var SSDP_DISCOVER_PACKET = 
    "M-SEARCH * HTTP/1.1\r\n" + 
    "HOST: " + SSDP_ADDRESS + ":" + SSDP_PORT + "\r\n" + 
    "MAN: \"ssdp:discover\"\r\n" + 
    "MX: " + SSDP_DISCOVER_MX + "\r\n" + 
    "ST: " + SEARCH_TARGET + "\r\n" + 
    "\r\n"; 

var searchSocket = new UDPSocket({ 
    loopback: true 
}); 

searchSocket.joinMulticastGroup(SSDP_ADDRESS); 

searchSocket.onmessage = function (e) { 

    var msg = String.fromCharCode.apply(null, new Uint8Array(e.data)); 

    console.log(msg); 
}; 

searchSocket.opened.then(function() { 

    searchSocket.send(SSDP_DISCOVER_PACKET, SSDP_ADDRESS, SSDP_PORT); 

    setTimeout(function() { searchSocket.close(); }, SSDP_DISCOVER_MX * 1000); 
});