两次投票之间的长轮询客户端“时间差距”

时间:2013-01-28 18:10:02

标签: javascript ajax websocket long-polling

假设我有一个服务器支持客户端长轮询。 然后我的客户端代码是这样的:

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 个答案:

答案 0 :(得分:1)

你可能想要考虑像Pusher这样的东西,它会让你的生活更容易处理这些事情(因为它们会给你一个库来处理所有这些在一个很好的包中)。

相关问题