【发布时间】:2011-05-02 22:48:33
【问题描述】:
【问题讨论】:
-
对于遇到这个问题的每个人来说,这是一个非常古老的问题,有一些非常古老的答案 - 事情已经发生了变化。 WebSockets 现在得到了广泛的支持,通常可以用来代替轮询或彗星。你可以在 MDN 找到一个很好的介绍:developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/…
【问题讨论】:
有两种方法:
轮询
客户端定期请求数据。即使没有数据,也会使用网络和服务器资源。数据不是很“实时”。非常容易实现,但不可扩展。
推送
服务器向客户端发送数据,因此客户端可以简单地等待它到达而不是定期检查。 这可以通过套接字连接来实现(因为您正在谈论网页,除非您使用 Flash,否则这并不真正适用,因为浏览器中的浏览器中的套接字支持目前还不成熟) - 或者通过使用已知的技术作为“彗星”。
如果服务器端实现得天真,那么套接字连接和 Comet 都不是特别可扩展的。
- 要大规模处理实时数据(无需购买大量硬件),您将需要不为每个客户端使用线程的服务器软件。
【讨论】:
要做到这一点,需要做两件事:
这导致需要...
【讨论】:
我用 JavaScript 计时器集执行(以毫秒为单位)做到了,每次计时器执行使用 Ajax 查询服务器并返回值(可能是 JSON 格式)的函数,然后您使用该值更新您的字段。我每5秒做一次,效果很好。在 ASP.NET 中,我认为它称为 Ajax Timer Control。
【讨论】: