1つのインスタンスがサーバー(セッションホスト)として機能し、他のインスタンスがサーバーを検出してセッションに参加する必要がある、LAN専用のChromeパッケージアプリケーションを作成したいと考えています。これはchrome.socketで実現できますか?私はss -ua
でそれを見ることができ、chrome.socketをブロードキャストまたはマルチキャストに使用するにはどうすればよいですか?
var socket = chrome.socket || chrome.experimental.socket;
socket.create('udp', {}, function(createInfo) {
var publish_socket = createInfo.socketId;
socket.bind(publish_socket, '225.0.0.42', 42424, function (result) {
if (result < 0) console.error(result); // this works fine
socket.recvFrom(publish_socket, null, function(recvFromInfo) {
console.log(recvFromInfo); // UNABLE TO MAKE THIS HAPPEN
});
});
// Chrome won't let me listen for app window closing
var cleanup_timer;
cleanup_timer = setInterval(function(){
if (requesting_window.closed) {
socket.destroy(publish_socket);
clearInterval(cleanup_timer);
}
},
5000
);
});
ソケットがバインドされています:
私はこのようなサーバーを設定している
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 225.0.0.42:42424 *:*
しかし、サーバーは、決して任意のデータを受信していないようにみえます。私はnc -uv 225.0.0.42 42424
を使用して、いくつかのデータとchrome.socketのAPIを送信しようとしたが、無成功しています
socket.create('udp', {}, function(socketInfo) {
var socketId = socketInfo.socketId;
socket.sendTo(socketId, str2ab("discovering"), '225.0.0.42', 42424, function(writeInfo) {
if (writeInfo.bytesWritten < 0) console.error(writeInfo);
});
});
これは、サーバー側でクライアント側と何にエラーコード-15
になります。
どこかでマルチキャストフラグが設定されている必要がありますが、それを見つけることができませんでした。
私はあなたがする必要があるすべては(あなたが発見したようなランダムポートと0.0.0.0
は、作品)ローカルインタフェースにバインドして、対処しているクロームバージョンマルチキャストパケットを送信するために23.0.1246.0 devの
[多分このリンクはあなたを助けます](https://github.com/KensakuKOMATSU/chrome-upnp)。 –
@Cicadaリンクをありがとう。 'sendTo'行の前に' socket.bind(socketId、 "0.0.0.0"、0、function(res){...}) 'を追加しました。残念ながら、私はマルチキャストパケットに**耳を傾ける**ことがまだ分かりません。 – hlidka