在页面上显示计时器的最佳方式是什么
what is best way to show timer on page
我想知道使用 comet 更新计时器是否真的比在客户端使用 javascript 并在特定时间间隔发布到服务器以记录时间(如果需要)真的有开销?
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 上..
使用 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>
">>
].
我想知道使用 comet 更新计时器是否真的比在客户端使用 javascript 并在特定时间间隔发布到服务器以记录时间(如果需要)真的有开销?
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 上..
使用 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>
">>
].