他们如何使实时数据在网页上实时显示?

16

他们是如何做到的?我想要有数据字段实时变化的网页,当人们查看网页时。这是一个例子

他们是如何做到的? JQuery? PHP?

我需要将我的字段数据连接到MySQL数据库。


对于所有遇到这个问题的人,这是一个非常古老的问题,有一些非常古老的答案 - 事情已经改变了。现在广泛支持WebSockets,并且通常可以代替轮询或彗星。您可以在MDN上找到一个相当不错的介绍:https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications - hawc
@hawc 现在还是使用WebSockets吗?像“google.finance”这样的页面是否使用WebSockets来自动刷新价格? - AndiAna
很惊讶没有人注意到这似乎不是实时更新的(使用服务器数据),只是在计时器上的各种计数器? - JeopardyTempest
3个回答

19

有两种方法:

轮询

客户端定期请求数据。即使没有数据,也会使用网络和服务器资源。数据不太“实时”。非常容易实现,但不可扩展。

推送

服务器向客户端发送数据,所以客户端可以等待数据到达而不是定期检查。这可以通过套接字连接实现(由于你谈论的是网页,除非你使用Flash,否则浏览器中套接字的支持目前尚不成熟)-或者使用称为“comet”的技术。

如果服务器端实现不当,套接字连接和comet都不是特别可扩展的。

- 要在大规模进行实时数据传输(而不购买大量硬件),您需要使用不使用每个客户端线程的服务器软件。


5
对于2011年来说,这是一个很好且合理的答案 - 10年后,在实现服务器推送时,WebSockets是首选。✌️ - hawc

6

我使用JavaScript计时器设置执行时间为毫秒,每次计时器执行函数会通过Ajax查询服务器并返回值(可能是JSON格式),然后更新您的字段。我每5秒执行一次,它完美地工作了。在ASP.NET中,我认为它被称为Ajax定时器控件。


30
这个答案存在的问题是,即使数据没有发生变化,每个连接的客户端都会不断地向您的服务器发送请求! - Scott Evernden
2
另一个问题是会导致服务器性能下降。 - Jesus Erwin Suarez

2

要实现这个功能,需要两个步骤:

  1. 在浏览器上运行的代码来获取最新数据。这可以是Javascript或运行在插件中的内容,例如Silverlight或Flash。它需要定期从服务器请求更新的内容。

这就需要...

  1. 运行在服务器上的代码来检索和返回最新数据(从数据库中)。这可以使用任何服务器端脚本语言创建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接