私はJavaScriptでDLNA(upnp)クライアントを書くことを計画しています。そもそもこれが可能かどうか知りたいのですが。
はいの場合、どこから始めればよいですか?始めるために何を知る必要がありますか?ドキュメントやチュートリアルへのリンクをいただければ幸いです。私はグーグルを試しましたが、あまり役立つコンテンツに出くわしませんでした。
私は正しい方向に製品が必要です。
ありがとう!:)
私はJavaScriptでDLNA(upnp)クライアントを書くことを計画しています。そもそもこれが可能かどうか知りたいのですが。
はいの場合、どこから始めればよいですか?始めるために何を知る必要がありますか?ドキュメントやチュートリアルへのリンクをいただければ幸いです。私はグーグルを試しましたが、あまり役立つコンテンツに出くわしませんでした。
私は正しい方向に製品が必要です。
ありがとう!:)
開始するのに最適な場所は、UPnPフォーラムのドキュメントバンドルにあるUPnPデバイスアーキテクチャのドキュメントです。これにより、プロトコルがいくつかの領域に分割されます。
要約すると、JavaScript UPnPクライアントは、ネイティブコードを使用してデバイス検出を処理できる場合にのみ可能です。これを試すことにした場合は、オープンソースのUPnPスタックが存在し、ほとんどの検出作業を処理します。
Plug.Play.jsをご覧ください-W3CネットワークサービスディスカバリAPIを介して取得したユニバーサルプラグアンドプレイ(UPnP)サービスと通信するためのJavaScript API
https://github.com/rexboy7/plug.play.js
およびssdp.js-(Simple Service Discovery Protocol)W3C RawSocketAPIに基づくネットワークサービス検出APIの実装
https://github.com/schien/ssdp.js
そして、これが上記を使用したDLNAクライアントのサンプル実装です:https ://github.com/mozilla-b2g/gaia/tree/master/tv_apps/dlna-player
編集:FirefoxOSに基づいています。
このトピックについて見て、AndréFiedlerの回答に基づいて、彼が投稿したライブラリはMDNwebarchiveUDPSocket
からのものであることがわかりました。
メインページでは、発見の例を見ることができます:
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);
});