如何将此ajax代码更改为长轮询

时间:2013-04-05 17:33:33

标签: javascript ajax long-polling

这是我的ajax代码,所以请任何人告诉我如何将此代码更改为长轮询?

这是我的代码: -

var chat = {}
chat.fetchMessages = function () {
  $.ajax({
    url: 'ajax/ajax/chat.php',
    type: 'POST',
    data: { method: 'fetch' },
    success: function(data) {
      $('#chats').html(data);
    }
  }); 
}
chat.interval = setInterval(chat.fetchMessages, 1000);

2 个答案:

答案 0 :(得分:2)

你必须将fetchMessage的下一次调用放在前一个的回调中:

var chat = {}
chat.fetchMessages = function () {
  $.ajax({
    url: 'ajax/ajax/chat.php',
    type: 'POST',
    data: { method: 'fetch' },
    success: function(data) {
      $('#chats').html(data);
      chat.fetchMessages(); // let's do it again
    }
  }); 
}
chat.fetchMessages(); // first call

答案 1 :(得分:0)

上面的代码似乎工作正常,但这会立即调用函数,因为它会增加流量,并且浏览器的连续长轮询内存使用可能会增加。尝试使用settimeout在调用之间保持一段时间,如果清除缓存也会很好。其他选择是彗星或信号。