长轮询客户端 2 次轮询之间的“时间间隔”

Long Polling client-side "Time Gap" Between 2 Pollings

本文关键字:时间 时间间隔 之间 客户端      更新时间:2023-09-26

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

var polling = function() {
    $.ajax({
        url: "/polling"
    }).done(function(data) {
        // polling again
        polling();
        // process the pushed data
        ...
    });
}
polling();

当我想在客户端不断轮询"/polling"时将某些内容推送到客户端时,这应该有效。

但是,您可能会注意到,客户端接收到推送的数据与下一次轮询到达服务器之间存在"时间间隔"。 此"时间间隔"中的数据将丢失。

有多种服务器端解决方法可以避免此问题。但是我想知道客户端是否有任何解决方法?如:* 客户端能否保持长轮询请求始终连接?我发现Gmail应该做一些这样的技巧。我在 GTALK 中聊天,但没有看到"/bind"请求中断。* AJAX 在传输时应该接收不完整的数据吗?然后连接可以永久连接。* Websocket 应该工作吗?如果是这样,没有HTML5我能做什么?

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