网站上的快速数字更新



我想知道如何在网站上更新快速数字。

我有一台产生大量输出的机器,我需要在线展示它。但是我的问题是更新频率很高,因此我不确定如何处理它。

最好显示最后 N 个数字,比如十个。数字以 30Hz 更新。这对人眼来说可能太多了,但人眼在这里只是为了控制。

我想知道如何做到这一点。页面重新加载将使浏览器持续加载页面,对于网页,需要显示更多的东西,而不仅仅是这些数字。

我可能会生成一个原始 Web 引擎,通过特定的 IP 地址和端口号将数字写入页面,但即便如此,我想知道这个页面重新加载是否会太慢,给用户带来奇怪的体验。

我应该如何处理网站上如此极端的数据更新率?通常网站不是那样的。

在这个问题的标签中,我命名了我理解的语言。最后我可能会用 C# 编写。

a)WebSocket 与 ajax 结合使用以仅更新站点的一部分将起作用,缺点:客户端基础结构(代理)必须支持这些(目前 99% 的时间不是这种情况)。

b) 对于现有的基础设施,方法是长轮询。你使用 javascript 发出一个 XmlHttpRequest。如果不存在数据,请求将在服务器端被阻止 5 到 10 秒。如果数据可用,您可以立即回答请求。然后,客户端立即发送新请求。我设法使用通过代理连接到网络服务器的 java 客户端每秒获得>500 次更新,http 连接到网络服务器(显示实时库存数据)。 您需要将多个更新捆绑到每个请求,以获得足够的吞吐量。

您不必使用页面重新加载。您可以使用 WebSockets 在浏览器(通过 JavaScript)和服务器之间建立开放的双向通信。

Python Tornado 支持此内置功能。此外,还有其他几个Python服务器支持它。Socket.IO是一个很棒的JavaScript库,具有回退功能,以方便客户端。

在后端,您可以使用 Redis 或 NewSQL 数据库(如 VoltDB)进行快速内存数据库更新。缓存对高延迟组件有很大帮助(尤其是在写入密集型应用程序中)。

在前端,您可以查看 websockets 和 Comet Web 应用程序模型 http://en.wikipedia.org/wiki/Comet_%28programming%29

许多游戏公司必须处理快速的计数器更新和显示 - 这可能值得研究。Zynga使用一种称为AMF的协议 http://highscalability.com/blog/2010/3/10/how-farmville-scales-the-follow-up.html

最新更新