我应该使用以下哪种javascripts长轮询代码?

我应该使用以下哪种javascripts长轮询代码?,javascript,ajax,long-polling,Javascript,Ajax,Long Polling,我想使用长轮询。 我在谷歌上找到了很多有用的资源,因为有很多,我开始搞不清哪一个更好。 下面是来自两个地方的三段代码片段 我的问题是,哪种代码是长轮询的最佳实践? 我应该用哪一个 提前感谢。我认为第一种方法更好: 若服务器配置为超时超过30000的长轮询,那个么在第一个轮询中,您将通过超时中断请求,并发送一个新请求,将不会调用success()函数 (虽然complete()将是,但error()中也可以像这样处理错误。) error: function(x, t, m) { if(

我想使用长轮询。 我在谷歌上找到了很多有用的资源,因为有很多,我开始搞不清哪一个更好。 下面是来自两个地方的三段代码片段

我的问题是,哪种代码是长轮询的最佳实践? 我应该用哪一个


提前感谢。

我认为第一种方法更好:

  • 若服务器配置为超时超过30000的长轮询,那个么在第一个轮询中,您将通过超时中断请求,并发送一个新请求,将不会调用success()函数

    (虽然complete()将是,但error()中也可以像这样处理错误。)

    error: function(x, t, m) {
        if(t==="timeout") {
            alert("got timeout");
        } else {
            alert(t);
        }
    }
    
    )。 而在第二个请求中,一个新请求将在30000之后发送,因此在客户端会有不可预测的行为(两个请求可以收到相同的答案,因此数据可能会被复制)

  • 若服务器配置为少于30000的长轮询,那个么在第二种方法中,客户端上的数据将不会及时更新

  • 若服务器配置为使用30000进行长轮询,那个么它应该并没有任何区别


  • 总而言之:在第一种方法中,情况是可控的,而在第二种方法中,情况并不总是可控的。

    感谢您的意见和解释
    function getContent(timestamp)
    {
    var queryString = {'timestamp' : timestamp};
    $.ajax(
    {
        type: 'GET',
        url: 'http://127.0.0.1/php-long-polling/server/server.php',
        data: queryString,
        success: function(data){
        // put result data into "obj"
        var obj = jQuery.parseJSON(data);
        // put the data_from_file into #response
        $('#response').html(obj.data_from_file);
        // call the function again, this time with the timestamp we just got from server.php
        getContent(obj.timestamp);
    }
    }
    );
    }
    
    error: function(x, t, m) {
        if(t==="timeout") {
            alert("got timeout");
        } else {
            alert(t);
        }
    }