我正在一个函数中实现一个简单的聊天实现,该函数有一个 ajax 调用,调用 setTimeout 以在成功时调用自身。这每 30 秒左右运行一次。这很好用,但我希望在收到消息时得到更直接的通知。我看到很多使用 jQuery 代码进行长轮询的示例,这些示例如下所示:
function poll()
{
$.ajax(
{
data:{"foo":"bar"},
url:"webservice.do",
success:function(msg)
{
doSomething(msg);
},
complete:poll
});
}
我了解这是如何工作的,但这只会立即重复向服务器发送请求。在我看来,服务器上需要一些逻辑,直到某些事情发生变化,否则会立即发回响应,即使没有新的报告。这是纯粹在 javascript 中处理的,还是我错过了要在服务器端实现的东西?如果在服务器上处理,暂停服务器执行真的是个好主意吗?根据您的所有经验,有什么更好的方法来处理这个问题?我的 setTimeout() 方法是否足够,也许只有更小的超时?
我知道 websockets,但由于它们还没有得到广泛的支持,我想坚持当前的技术。