同时为所有用户实时刷新Div?

Posted

技术标签:

【中文标题】同时为所有用户实时刷新Div?【英文标题】:Refresh Div in real time for all users at the same time? 【发布时间】:2013-09-20 09:53:13 【问题描述】:

我需要知道如何同时为所有用户实时刷新 div?

我已经搜索了好几天,除了 AJAX 之外还没有找到可靠的答案,但是当我尝试找到一个示例时(即使是一个简单的示例也可以),所以我可以明白了,我发现的只是使用 AJAX 为一个用户(客户端)刷新一个 Div!

这是对像我这样的新手保密的***编码秘密,还是没有人真正知道答案?

我什至发现在 *** 上提出了同样的问题,但所有的答案都是“AJAX”。好吧,假设我们将使用 ajax,但所有示例、教程都是关于为一个用户刷新 div 而不是所有用户!

有人能指出我正确的方向吗?任何示例,教程将不胜感激。

编辑:

我的意思的一个例子是便士拍卖的计时器!计时器和最高出价者将同时显示给所有用户!没有延迟,即使只有几毫秒。

【问题讨论】:

搜索ajax轮询和socket编程 如果您需要“同时为所有用户服务”,那么像 http 这样的异步技术不是一个好的选择……但为什么这种刷新必须绝对同步对业务至关重要 Websockets 可能是你最好的选择。 服务器/客户端(频道/订阅者)之间是否需要双向全双工传输? - Node.js 可以做到这一点,python 也有可用的 twisted,Ruby 有 event-machine,你可以通过它们实现相同的功能。为 php 寻找类似的解决方案。 【参考方案1】:

您可以通过设置刷新时间来刷新数据。就像这里描述的: http://matthewaprice.com/simple-jquery-ajax-auto-refreshing-div/

希望这能回答你的问题:)

*编辑;没关系,只需阅读您还阅读了有关刷新选项的信息。我的错,确实读多了。

【讨论】:

【参考方案2】:

我建议从单个用户的 Ajax 脚本开始,然后对其进行扩展。您可以创建一个 ajax 脚本,在客户端询问服务器“有什么要告诉用户的吗?”每5秒左右。然后,服务器可以检查数据库是否有要通知用户的内容。

像这样,所有用户每 5 秒轮询一次更新,当您确实有话要说时,如果轮询有效,它将以 5 秒的间隔显示给所有用户。服务器控制时间,客户端只是轮询。

从服务器获取消息显示给用户后,刷新 div 应该很简单,例如 $('#TheDiv').html("<p>" + yourservermessage + "</p>");


在 cmets 之后编辑:如果性能或其他问题需要它,使用 web sockets 之类的同步选项可能是更可取的。对于这些,请查看 http://socket.io/ 和 this 相关的 SO 问题。不过,与传统轮询相比,它确实有点复杂。

【讨论】:

这不会给服务器带来负担吗?每个用户 5 秒? 不是真的,这取决于:) 如果服务器只返回 FALSE(什么都不做),我认为它可以。但这不会按预期同步,会有用户可以在 4 秒后加载新的 div。 是的!同步是这里的关键词。这就是让我认为它会给服务器带来负担的原因 实际上,Web 套接字或其他一些同步选项很可能会更高效。必须以这种情况为基准。我会这样做是因为构建这样的东西非常简单 - 如果/当需要更高性能的东西时,我会用套接字替换这个系统。 @asprin,你是对的。同步(同时向所有用户显示结果)是我所追求的。【参考方案3】:

我可能在这里是老派,但是带有元刷新的 iframe 不能胜任这项工作?

【讨论】:

不会只针对一个用户吗?还有,是不是很丑? 它不会只供用户使用,但是是的,它像地狱一样丑陋【参考方案4】:

使用 Websockets,网上已经有很好的库了

http://socketo.me/api/namespace-Ratchet.html

http://socket.io/

【讨论】:

以上是关于同时为所有用户实时刷新Div?的主要内容,如果未能解决你的问题,请参考以下文章

axios 获取实时数据请求

让用户调整 div 容器的大小,页面刷新后保存

用户名实时检测

我可以使用 SignalR 在所有客户端上触发 AJAX 请求吗?

html 调试div - 带“display:none”样式的Div。用于调试实时网站以输出用户无法看到的信息。

使用实时更新将在线用户显示为绿色,将离线用户显示为灰色