假设我有一个服务器支持客户端长轮询 . 然后我的客户端代码是这样的:
var polling = function() {
$.ajax({
url: "/polling"
}).done(function(data) {
// polling again
polling();
// process the pushed data
...
});
}
polling();
当客户端连续轮询到“/ polling”时我想向客户端推送一些内容时,这应该可行 .
但是,您可能会注意到客户端收到推送数据和下一次轮询到达服务器之间存在“时间间隔” . 这个“时间间隔”中的数据将会丢失 .
有各种服务器端解决方法可以避免此问题 . 但我想知道客户端是否有任何变通方法?例如:*客户端是否可以保持长轮询请求始终连接?我发现Gmail应该做一些这样的技巧 . 我在gtalk聊天,但没有看到“/ bind”请求中断 . * ajax应该在转移时收到完整的数据吗?那么连接可以永远连接 . * websocket有效吗?如果是这样,没有HTML5我该怎么办?
1 回答
你可能想要考虑像Pusher这样的东西,它会让你的生活更容易处理这些事情(因为它们为你提供了一个库,可以在一个漂亮的包中处理所有这些) .