【问题标题】:How to change A's html site when B does somethingB做某事时如何更改A的html站点
【发布时间】:2010-02-19 10:48:26
【问题描述】:

假设我们有用户 A 和 B 访问包含按钮的相同 URL。当 A 单击按钮时,我希望 B 的网站上的某些内容在 B 在其上时立即更改,例如要添加的文本。 我希望延迟小于 150 毫秒。

这是现实的吗?你能给我一些关于我应该搜索什么的提示,或者可以说明这一点的玩具例子吗?谢谢。

【问题讨论】:

  • 值得一提的是,如果您同意用户在下次访问该页面时看到更新,或者在他们坐在该页面上实时看到更新。
  • 我把问题描述澄清了,谢谢指出!
  • 如果你的传输是在 HTTP 上,或者你的用户不在同一个 LAN 上用 firebug 测试谷歌的主页,150ms 不会有任何进展,120ms 是我能得到的最好的,但你的应用程序需要 2 个 HTTP往返(A 服务器 B)

标签: javascript jquery html


【解决方案1】:

我认为你应该看看 Push/Comet 服务器。目前非常流行的一个是 NGINX 的推送模块:http://pushmodule.slact.net/

例如,您可以通过这种方式创建聊天室。至少听起来你是这么解释的。

****更新****

至于您的延迟问题,我认为 150 毫秒是不现实的,您意识到这是一个完整的往返行程,至少加上一次数据库读写。轮询不会给用户带来非常快的体验,这是因为你的 JS 可能决定在用户​​完成操作之前发送它的响应,你必须等到你的 JS 再次为用户发送请求“B "查看更新。这可能很长,也许像 10 秒?在我看来,你不会使用轮询,因为它非常浪费,而且缓存也很困难。

我会推。不幸的是,Apache 没有像 Nginx 这样可靠的推送服务。

【讨论】:

    【解决方案2】:

    有两种主要方法:

    1. 您可以进行 ajax 查询,询问状态是否每 5 秒发生一次变化。
    2. HTTP 流媒体

    本文列出了另外 2 种方法:http://www.infoq.com/news/2007/07/pushvspull

    【讨论】:

    • 你的两个例子都是轮询的。而且不止这两种方式。
    • 我认为 HTTP Streaming 是对“HTTP Persistence”的一种尝试,MS 率先在 HTML 1 规范中没有成功。你仍然可以在 .NET 中看到它的痕迹。
    • @Joseph,我现在真的很想雇用你。 xD
    【解决方案3】:

    您可以使用phpmysql 或某种数据库轻松完成此操作。有什么东西阻止你使用数据库吗?如果是这样,您可以使用 php 写入文件,这样您就可以为用户 A 和 B 存储这些值。

    【讨论】:

    • 没有什么能阻止我。我更新了问题描述以反映我正在寻找实时解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2022-07-23
    • 2018-09-04
    • 2011-05-01
    相关资源
    最近更新 更多