Open5
nest: ベンチマークの作成
ちょっと dataChannel のパフォーマンスが不安なのでベンチマークしてみることにする。
今回は Webブラウザ → デバイス方向を計測する。デバイス → Webブラウザはまぁ後廻しで。。
- 1メッセージ = 16000 バイト
- Low watermark = 320000 バイト (20メッセージ) - WebRTCはlow watermarkコールバックを提供する
- バッファサイズ = 3200000 バイト (200メッセージ) - 最初の接続時にこれだけバッファしておき、以降はlow watermarkイベントで補充する
API
そもそも node-datachannel
とブラウザで微妙にAPIが違うんだよなぁ。。
できた
じつにかんたんだった
微妙
うーん。。ローカル同士で25MiB/sec。。FirefoxとEdgeではパフォーマンスに差は無かった。
ちなみにiOSだと直ぐ止まってしまう。これはtabであんまりCPU使うとダメな奴かな。。要デバッグ。
最新の iOS 実機でbufferedamountlowが発火しない問題
iOSのSafariでは、接続直後に送った 3200000 バイト以降通信が進捗しない現象が観察された。
つまりバッファを埋め切れなかったって事か。。 bufferedAmount
を見て watermark を超えるまでキューしないとダメって事かな。
これはどうも 最新のSafariのバグ っぽい。つまり、 bufferedamountlow
イベントが何故か設定した bufferedAmountLowThreshold
を下回っても発火しないようだ。 iOS 15の実機では正常に動作した。
...手元のmacは当初は動作していたものの、Sonomaにアップデートしたら動かなくなった。
bufferedAmount
を見て適当な閾値を超えるまでキューする というロジックにしても発火しない。