【问题标题】:Code outline for auto-update pages自动更新页面的代码大纲
【发布时间】:2011-01-19 10:31:26
【问题描述】:

我想处理实时信息,并且我想复制一个非常标准的功能:

当您在单个问题视图中输入您的答案时,它会出现在 SO 上,顶部会弹出一条警报,说“有 3 个新闻答案,点击显示”

也出现在推特“此搜索中有 5 条新推文:点击更新”

我非常精通服务器端和客户端代码,而我正在寻找的是这种情况如何发生的基本大纲(甚至不是伪代码,但可能是简单的英语)。

服务器上是否有每分钟运行的 CRON 作业,向页面上的长轮询 AJAX 位发送信号?

页面本身是否轮询服务器?

欢迎任何和所有解决方案。谢谢!

【问题讨论】:

    标签: php javascript long-polling


    【解决方案1】:

    您可以使用 Javascript setTimeout 方法使用定期在客户端运行的 AJAX 调用来实现这一点。您将拥有一个 Javascript 函数,该函数调用您的服务器端方法,该方法检查是否发生了更新,显示任何更新,然后调用 setTimeout 来调用自身。

    伪代码:

    function updateCheck()
    {
      //make ajax call
      //do something if any update has occurred
      setTimeout("updateCheck()", 10000); //second param is in milliseconds
    }
    

    【讨论】:

    • 但是 FireBug 没有显示任何 AJAX 请求...这怎么可能?
    【解决方案2】:

    从我的脑海中,我会通过 javascript 实现它 - 设置超时来质疑服务器。不过,这只是一个有根据的猜测。

    【讨论】:

      【解决方案3】:

      看起来 SO 使用定期更新程序向以下网址发出 ajax 请求:

      https://stackoverflow.com/posts/2307584/answer-activity-heartbeat

      这会返回一个 JSON 结果:

      {"Result":false,"Count":0}
      

      以下是新答案存在时的结果示例:

      {"Result":true,"Count":1}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多