質問: ### 前提・実現したいこと お世話になります。 現在Webブラウザ上からプリンタ機器のSNMP検索が出来ないか調査をしています。 前提:まっさらなPC(OSは不問)にWebブラウザ(とりあえずChrome)が入っている状態。 実現したいこと:クライアントサイドのJavaScriptだけでUDP通信を行いたい。 ### 発生している問題・エラーメッセージ 試そうとしていることは以下になります。 1.Node.jsのnpmからnet-snmp(https://www.npmjs.com/package/net-snmp)をインストール 2.Node.jsのnpmからbrowserify(https://www.npmjs.com/package/browserify)をインストール 3.net-snmpのサンプルコードをbrowserifyで変換 4.Webブラウザで確認 4を実行時にクライアントサイド側でdgram.createsocket is not a functionのエラーが出て失敗しました。 いろいろ調べた結果、dgram内部はNode.js内部で処理しているのでdgramはbrowserify出来ない、 一般論としてクライアントサイド側でWebSocket,XHR,WebRTC以外での通信は出来ないこと、 W3CでUDPソケット通信がドラフトでリタイアされたことは分かりました。 (https://www.w3.org/standards/history/tcp-udp-sockets) ### 試したこと A,dgramをchrome-dgram(https://www.npmjs.com/package/chrome-dgram)に差し替えて試す dgramがクライアントサイドで利用できないので該当部分をchrome-dgramに差し替えて検証してみました。 この方法だとSNMP検索は出来るのですがChromeアプリをインストール、Chromeアプリ上で実行する為 実現したいこととは少し違います。 B,dgramをdgram-browserify(https://www.npmjs.com/package/dgram-browserify)に差し替えて試す こちらはdgramを別のパッケージdgram-browserifyに差し替えて試してみました。 結果、dgram-browserifyはdgram.createsocketの部分をWebSocketを代用して作られているため UDPポートを利用して送信していないためSNMP検索が出来ませんでした。 C,mock-dgram(https://www.npmjs.com/package/mock-dgram)に差し替えて試す こちらはPC上のメモリをUDP通信と見せかけてデータのやり取りを行っていたので 実際にUDP通信は行われていませんでした。 D,NaCl+PPAPIを利用して外部プログラムからSNMP検索を行う こちらも実現できていることは確認しましたがA案と同じくWebブラウザ以外に外部プログラムを用意する 必要があるため実現したいこととは少し違います。 JavaScript初心者なのであまりよく分かっていませんが私としては、WebRTC,DNS等でWebブラウザ上から UDPデータのやり取りが行われているのだからUDP通信できるファイルディスクリプタさえ JavaScriptで作れたらUDPポートからの通信は出来るんじゃないか?と考えています。 上記手段以外でWebブラウザ上からUDP通信(SNMP検索)を行う手段はあるでしょうか? 以上、よろしくお願いします。
回答: OSCでの通信、bower-dgram等いろいろ調べましたがどれもUDPポートを開くことは出来ませんでした。 現時点ではA案のChromeAppsからChrome.Socket経由でUDP通信を行う方法が堅実そうです。