我想弄乱实时信息,并且我想复制一个非常标准的功能:
当您在单个问题视图中输入您的答案时,它会出现在这里
它也出现在推特上“此搜索中有 5 条新推文:点击更新”
我非常精通服务器端和客户端代码,而我正在寻找的是这种情况如何发生的基本大纲(甚至不是伪代码,但可能是简单的英语)。
服务器上是否有每分钟都在运行的 CRON 作业,它向页面上的长轮询 AJAX 位发送信号?
页面本身是否轮询服务器?
欢迎任何和所有解决方案。谢谢!
我想弄乱实时信息,并且我想复制一个非常标准的功能:
当您在单个问题视图中输入您的答案时,它会出现在这里
它也出现在推特上“此搜索中有 5 条新推文:点击更新”
我非常精通服务器端和客户端代码,而我正在寻找的是这种情况如何发生的基本大纲(甚至不是伪代码,但可能是简单的英语)。
服务器上是否有每分钟都在运行的 CRON 作业,它向页面上的长轮询 AJAX 位发送信号?
页面本身是否轮询服务器?
欢迎任何和所有解决方案。谢谢!
从我的脑海中,我会通过 javascript - 设置超时来质疑服务器。不过,这只是一个有根据的猜测。
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
}
看起来 SO 使用定期更新程序向以下网址发出 ajax 请求:
https://stackoverflow.com/posts/2307584/answer-activity-heartbeat
这将返回一个 JSON 结果:
{"Result":false,"Count":0}
以下是存在新答案时的结果示例:
{"Result":true,"Count":1}