0

クライアント サイトで javascript を使用し、必要に応じて時間を記録するために特定の時間間隔でサーバーに投稿するよりも、comet を使用してタイマーを更新するのは本当にオーバーヘッドですか?

body() ->
 wf:comet(fun() -> counter(1) end),
 #panel { id=placeholder }.

counter(Count) ->
 timer:sleep(1000),
 wf:update(placeholder, integer_to_list(Count)),
 wf:flush(),
 counter(Count + 1).

オーバーヘッドは理解していますが、どのくらいか知りたいですか? すべてのイベント通信は WebSocket 経由で行われるため..

4

1 に答える 1

0

これを comet/websockets で行うと、不要なオーバーヘッドが追加されます。サーバー側での追加プロセスと追加の帯域幅使用量です。これがサーバー側で起こっている何かの継続的なステータス更新である場合、それは異なりますが、クライアント側を表示するためにカウンターをインクリメントするだけで、クライアント側に残すのが最善です.

JavaScript を使用してクライアント側で実行するとsetInterval、問題が簡単に解消されます。次のようなものが仕事を成し遂げるはずです。

body() ->
  [
    #panel { id=placeholder },
    <<"
    <script>
      var my_counter = 1;
      function update_counter() {
        objs('placeholder').html(my_counter);
        my_counter++;
      }
      setInterval(update_counter, 1000);
     </script>
     ">>
  ].
于 2015-08-25T02:54:09.063 に答える