4

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

当您在单个问题视图中输入您的答案时,它会出现在这里

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

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

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

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

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

4

3 回答 3

1

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

于 2010-02-21T21:59:19.600 回答
1

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

伪代码:

function updateCheck()
{
  //make ajax call
  //do something if any update has occurred
  setTimeout("updateCheck()", 10000); //second param is in milliseconds
}
于 2010-02-21T22:01:54.860 回答
0

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

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

这将返回一个 JSON 结果:

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

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

{"Result":true,"Count":1}
于 2010-02-21T22:38:55.373 回答