2016-01-13 5 views
5

私はクライアントとサーバー間の双方向通信にWebソケットを使用するWebアプリケーションを作成しています。私の主な関心事は、ユーザーが知覚する待ち時間なので、私ができることは何でも測定し、プロファイリングしています。特に、私はonmessage()イベントで現在時刻を取得しています。これは便利ですが、イベントがブラウザのイベントループにプッシュされたことを知りたいとき - onmessageイベントが発生する前に起こります。 Websocketのタイミング:websocketメッセージがブラウザに到着した正確な時刻を取得するにはどうすればよいですか?

は、Chromeデベロッパーツールでは、私は、イベントがイベントループに入る時点で、私が思うに、「ネットワーク - >フレーム」タブで回を参照してください。しかし、私はこれをJavascriptでプログラムでキャプチャする必要があります。どのようにこれを行うにはどのようなアイデア?

いくつかのケースでは、開発ツールに表示される時間とonmessageイベントでキャプチャした時間との間に約10ミリ秒の違いがあることがありました。私は、差が常に10ミリ秒ほど小さいか、ページ内で起こっているレンダリングやその他の事情により、その差がはるかに大きいかどうかを表示するようにしたいと思います。

enter image description here

+0

あなたは実際に知覚されたレイテンシーを使用しているか、早すぎる最適化を受けているだけで問題が発生していますか?問題が発生している場合は、実際に毎秒30kのピングを送信していますか?そのようなpingはhealthcare.govのようなサイトをダウンさせる可能性があります...最後に、ほとんどの人間は10msの違いを認識しませんので、コードで10msの時間をキャプチャすることができれば、 devで見ている。ツールは、それは十分です、次の問題に移動します。 –

+0

レイテンシは私の大きな関心事であり、実際には発生しています。私はそれを減らす方法を探しています。メッセージサイズ、物理的な場所、同時ユーザー数などの待ち時間に対するさまざまなパラメータの影響を調べています。私の測定値がわずか10ミリ秒であるとは確信していないからです。ブラウザはメッセージが到着したときを知っているように見えるので、この情報を取得する方法があると思っています。 30kについては、これは私の多くの実験の1つに過ぎません。必ずしも典型的なメッセージサイズではありません。 –

答えて

1

のWebSocket用のブラウザAPIは、必要な情報を公開するために、あまりにも制限されています。

ブラウザはPerformance interfaceとタイミングの情報を公開するために始めたが、そのインターフェイスが唯一のあなたにWebSocketのサーバーへの初期接続のタイミング情報を教えてくれます、それはあなたの説明に基づいてのWebSocketフレーム

+0

共有してくれてありがとう。 –

0

のことは知りません問題の、それは必要ではない。 httpスタックがメッセージを受け取ってからアプリケーションに渡してプログラムでログに記録できるようになるまでの遅延は、ごくわずかで、javascriptのdatetime値の精度よりもはるかに低いです(performance.nowを使用できますが、それがいかに正確であるかに関して)。

あなたの待ち時間は、ネットワーク要因とサーバの応答時間によって駆動されようとしている - あなたはそれらの合理的な測定結果を得ることができる場合、あなたがなりたい場所、あなたがなります。他の要因が測定ノイズに寄与する可能性があります。測定しようとしている値の10%未満であれば、問題はありません。

関連する問題