假设我有一个服务器支持客户端长轮询。那么我的客户端代码是这样的:
var polling = function() {
$.ajax({
url: "/polling"
}).done(function(data) {
// polling again
polling();
// process the pushed data
...
});
}
polling();
当我想在客户端不断轮询“/polling”时向客户端推送某些内容时,这应该可以工作。
但是,您可能会注意到客户端收到推送数据和下一次轮询到达服务器之间存在“时间间隔”。这个“时间间隔”中的数据将会丢失。
有多种服务器端解决方法可以避免此问题。但我想知道客户端是否有任何解决方法?如: * 客户端能否保持长轮询请求始终连接?我发现 Gmail 应该做一些这样的技巧。我在 gtalk 中聊天,但没有看到“/bind”请求中断。* ajax 是否应该在传输时接收到不完整的数据?然后连接可以永远连接。* websocket 应该工作吗?如果是这样,没有 HTML5 我该怎么办?