問題タブ [rtcpeerconnection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
webrtc - addicecandidate によって空の文字列 icecandidate を追加する必要がありますか?
私の質問は webrtc ネゴシエーションについてです。
多くのオンライン チュートリアルと MDN で説明されている内容には矛盾があります。
MDNでは、リンクと言っています
各候補生成の最後に、候補プロパティが空の文字列である RTCIceCandidate の形式で候補終了通知が送信されます。この候補は、その通知をリモート ピアに配信するために、通常どおりaddIceCandidate() メソッドを使用して接続に追加する必要があります。
現在のネゴシエーション交換中に予想される候補がまったくない場合、候補プロパティが null である RTCIceCandidate を配信することによって、候補終了通知が送信されます。このメッセージをリモート ピアに送信する必要はありません。これは、icegatheringstatechange イベントを監視することにより、iceGatheringState が完了に変更されるのを監視することによって代わりに検出できる、状態の従来の通知です。
ただし、ここのチュートリアルでは、次のコードを紹介しています
候補が空の文字列の場合、偽と評価され、 経由で送信されませんsendToServer
。
さらに興味深いことに、ここの同じ記事でも
彼らは次のサンプルコードを持っています
しかし、このスニペットのすぐ下に、彼らは言います
ICE ネゴシエーション セッションで、特定の RTCIceTransport を提案する候補がなくなると、候補の世代の収集が完了します。これが発生したことは、候補文字列が空 ("") である icecandidate イベントによって示されます。
上記の「新しい候補を共有する」で説明されているように、標準の候補と同様に、これをリモート ピアに配信する必要があります。これにより、リモート ピアにも候補終了通知が確実に送信されます。
実際、私は多くのオンラインチュートリアルを読みましたが、空の文字列候補を処理する場所を見たことがありません。
webrtc - WebRTC - onIceCandidate で初めて候補者を null として取得する
私はいくつかのクロスブラウザー テストを行っていましたが、Chrome から Firefox (受信側) でテストしているときに、常にこの問題に初めて遭遇しました。リフレッシュ後、正常に動作しているようです。
以下に示すように、peerConnection にバインドされたイベント ハンドラーがあります。
peerconnection.onicecandidate = handleIceCandidate;
初めて、候補に null が表示されます。
event.candidate = null
ここで何が起こっているのか手がかりはありますか?さらに情報が必要な場合はお知らせください。
前もって感謝します!