Chrome Canary (現在のバージョン 25) を使用して、パッケージ化されたアプリで UDP ソケットを動作させようとしています。ここにあるUDP の例が、ここにあるリファレンス ドキュメントと競合するという事実にかなり混乱しています。
公式の例では、次の行を使用しています。
chrome.socket.create('udp', '127.0.0.1', 1337, { onEvent: handleDataEvent }, ...
Canary でこの行を使用すると、エラーが発生します。
キャッチされないエラー: フォーム socket.create(string, string, integer, object, function) の呼び出しが定義 socket.create(string type, optional object options, function callback) と一致しません
文書化された関数の形式と一致するため、驚くことではありません。(この例は時代遅れだと思いますか?) OK、これを試してみます...
chrome.socket.create('udp', { onEvent: handleDataEvent }, ...
カナリアは次のように不満を述べています。
キャッチされないエラー: 引数 2 の値が無効です。プロパティ 'onEvent': 予期しないプロパティです。
特にこのパラメーターはリファレンスに記載されていないため、今は混乱しています。だから私はこれで行きます:
chrome.socket.create('udp', {}, ...
これで OK が作成されますが、次の呼び出しはconnect
...
chrome.socket.connect(socketId, function(result) ...
...これで失敗します:
キャッチされないエラー: フォーム socket.connect(integer, function) の呼び出しが定義 socket.connect(integer socketId, string hostname, integer port, function callback) と一致しません
...これは驚くべきことではありません。私のコードはどこにもホストやポートについて言及していないので、connect
. したがって、次の形式に変更します。
chrome.socket.connect(socketId, address, port, function (result) ...
やっとソケットに接続して書き込みができてOK。しかし、これは読書をカバーしていません。
- 送受信できるUDPに基づいた実際の例を誰かに見せてもらえますか?
- サンプルの onEvent ハンドラが機能しないため、データを受け取るにはどうすればよいですか? データが到着したらすぐにブロックせずにオンデマンドで確実に受け取るにはどうすればよいですか?