【问题标题】:Rapid number updates on a website网站上的快速号码更新
【发布时间】:2012-12-06 00:13:33
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 你说的人眼在这里只是为了控制是什么意思?您希望这是远程软件的数据通道吗?

标签: c# python asp.net web-services perl


【解决方案1】:

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

Python Tornado 内置了 support。此外,还有一些其他 Python 服务器支持它。 Socket.IO 是一个很棒的 JavaScript 库,带有后备功能,方便客户端。

【讨论】:

  • 好的,我会调查一下我不想重新加载页面,websockets 对我来说是新的。
【解决方案2】:

a) WebSockets 与 ajax 一起仅更新网站的一部分会起作用,缺点:客户端基础设施(代理)必须支持这些(目前 99% 的时间都不是这种情况)。

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

【讨论】:

  • hm 我想我喜欢你的 b) 答案,但是我不熟悉它是如何用 javascript 实现的?你知道一个例子吗
  • 我使用 java 作为客户端。使用 javascript,您需要使用异步请求 (XMLHttpRequest)。如果请求包含数据,则渲染它,否则立即重新发送新请求。真正的工作是在服务器端,我不知道 C# 服务器,使用 java 你可以使用 Comet,或者做一个手工解决方案(如果当前客户端请求没有可用的数据,则阻止调用线程)。也许搜索 javascript-comet 客户来了解一下。
  • 哦,有一个 C# 服务器,我知道我可以用 c# 编写一个基本的网络服务器,但它没有额外的拥有一个真正的网络服务器。所以我猜你基本上是创建一个 onpageload 脚本来不断更新 DIV 部分,就像他们在 ajax 中做的那样?。
【解决方案3】:

在后端,您可以使用 Redis 或像 VoltDB 这样的 NewSQL 数据库来快速更新内存数据库。缓存对高延迟组件有很大帮助(尤其是在写入繁重的应用程序中)。

在前端,您可以查看 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多