【问题标题】:send multi ajax requests every 1 second每 1 秒发送多个 ajax 请求
【发布时间】:2012-02-16 18:14:16
【问题描述】:

我想像 facebook 聊天一样聊天 :)

我正在使用这样的请求

这里获取房间用户和 roomBody

$('.room_users,.room_body').each(function () {
                 var page    = $(this).attr("page");
                 var room_id = $(this).parents('.room').children('.roomy_id').attr("value") ;
                 var url     = page+room_id ;
                 window.setInterval(function () { $(this).load(url);}, 200);
         });

Here To Get Room Lists

         $('#room_list').each(function () {
                 var page = $(this).attr("page");
                  var url = page ;
                  window.setInterval(function () {
                      $(this).load(url);
                  }, 60000);
         });

如您所见,我的请求每 1 秒发送一次,但并非所有请求都返回 202 状态

多次返回 404 notfound

有时请求每 1 秒发送两次

【问题讨论】:

    标签: ajax jquery httprequest


    【解决方案1】:

    如果您的服务器支持 websocket 或任何形式的 Comet(如长轮询),请尝试使用其中之一。同时,为您的请求添加超时,并且仅在前一个返回或超时后发送下一个 ajax 请求...

    function updaterooms() {
      $.ajax({
        type: "GET",
        url: page,
        async: true,
        cache: false,
        timeout:5000,
        success: function(data){
          // do what you need with the returned data...
          setTimeout('updaterooms()',1000);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
          $("#error").text("ERROR: " + textStatus + " (" + errorThrown + ")");
          setTimeout('updaterooms()',1000);
        }
      });
    }
    

    【讨论】:

      【解决方案2】:

      您应该查看Comet,而不是每秒向服务器发送垃圾邮件。

      这是一种模式,它使用一个长时间运行的请求在很短的时间间隔内将数据流式传输到浏览器很长时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-07
        • 2018-07-12
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        • 2014-01-03
        相关资源
        最近更新 更多