問題タブ [rtcdatachannel]
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.
ios - WebRTC: didOpenDataChannel が呼び出されず、RTCDataChannel が機能しない
データチャネルを使用するのは非常に簡単だと思われます...私はすでにオーディオとビデオを正しく共有する多くのピアを持っています(アイス候補交換フェーズの後)。
1 つのピアで、次の行を実行します。
同じピアのデバイスで、状態が に変化したときに、設定したばかりのデリゲートで通知されることを期待していますRTCDataChannelStateOpen
。
RTCPeerConnectionDelegate
代わりに、他のデバイスでは、特にメソッドで通知されることを期待しています
これは何も起こりません...最初のデバイスでは、dataChannel の状態は on のままRTCDataChannelStateConnecting
です。同じ識別子で別のデータ チャネルを作成しようとすると、アプリがクラッシュします。本当にデータチャネルを作成すると思いますが、不明な理由でそれを開くことができません。誰かがこのプロセスで何が悪いのか説明できますか?
javascript - webrtc経由で渡されたファイルの整合性を確認するには?
RTCPeerConnection
と を使用してファイルを転送できるページを作成しましたdatachannels
。
受信したファイルと転送されたファイルがまったく同じであることを確認する必要があります。具体的には、パッケージが失われたり、途中で悪者が悪意のあるパッケージを送信したりしていないことを確認する必要があります。
ファイルをチャンクに分割し、それらのチャンクを識別せずに 1 つずつ送信します。新しい webrtc メッセージが反対側に来ると、そのデータをチェックなしでバッファにプッシュします。転送されたサイズが受信したサイズと等しい場合、ファイルを組み立てます。
この while プロセスは次のようになります。
差出人
受信機
私の質問は: 受信したファイルが正しいことを確認する最善の方法は何ですか?
送信者と受信者でファイルの md5 チェックサムを計算しようとしました。FileApi
チェックサムを計算する私が知っている関数を生成しないため、JavaScriptの実装により、md5
15MBを超えるファイルのタブが強制終了されます。これにより、巨大なファイルのチェックサムをチェックできなくなります。
ios - ピア接続オファーを送信する前にデータ チャネルを開く必要があるのはなぜですか?
私は単純なチャット アプリケーションをコーディングしています。データ チャネルを使用してアプリケーション間でキャンバス ポイントを送信する共有描画キャンバスをアプリケーションに追加したいと考えています。でもオプション仕様なので、チャットを開くたびにデータチャンネルを開きたくない。ピア接続を確立した後 (提供後) にデータ チャネルを開くと、データ チャネル経由でデータを送信できません。それ以外の場合は送信できます (ここからこのポイントを取得しました: https://stackoverflow.com/a/35141500/5663292 )。では、なぜピア接続を提供する前にデータ チャネルを開く必要があるのでしょうか。
webrtc - WebRTC 経由で送信されたメッセージが異なる順序で受信されることがあるのはなぜですか?
私は順序付きセットを true に設定していますが、短時間 (1 秒未満) に多数 (1000 以上) のメッセージが送信されると、受信したメッセージがすべて同じ順序で受信されるわけではありません。
必要に応じて、この奇妙な動作を再現するための最小限の例を提供できます。
また、bufferedAmountLowThreshold と関連するイベントを使用して、送信バッファ量が大きすぎる場合に遅延させます。2000 を選択しましたが、最適な数がわかりません。短期間に非常に多くのメッセージを送信する理由は、一度に送信されるデータの最大量をオーバーフローさせたくないからです。そのため、データを 800 バイトのパックに分割して送信します。繰り返しますが、1 メッセージの最大サイズがわかりません。
あまり多くのメッセージに分割されていない小さなデータの場合は、すべて正常に機能します。このエラーは、大きなファイルに対してのみランダムに発生します。
json - WebRTC データ チャネル パケットはアトミックですか?
WebRTC データ チャネルを使用して、ピア間で json メッセージを交換したいと考えています。
各jsonメッセージがアトミックにリモートで到着すると安全に想定できますか(パケットが分割またはチャンクされるTCPとは異なります)、または1つのメッセージがどこで終わり、別のメッセージが始まるかを知るために長さプレフィックスのようなものを実装する必要がありますか?
関連する場合は、信頼できるチャネルと、場合によっては tcp ターン サーバーを使用します。