jquery php проблема с длинным опросом - PullRequest
0 голосов
/ 13 января 2012

Я делаю чат, который основан на длинном опросе (что-то вроде this ) с PHP и jQuery. как только вся страница загружена в браузер, функция выполняет длинный запрос опроса к фону с некоторым ограничением времени ожидания, когда данные поступают с конца, она снова делает запрос длинного опроса и, если возникнет ошибка, она снова сделает новый запрос на длительный опрос.

Проблема: анализируя трассировки с помощью firebug, я заметил, что несколько раз длинный запрос на опрос выполняется 3 или 4 раза, но это не должно. на каждой странице должен быть запущен только один длинный запрос.

однако код работает отлично. но проблема заключается в дублировании длинных запросов.

function listen_for_message(){ 
// this functions is makes the long-polling request
$.ajax({
  url: "listen.php",
  timeout:5000,
  success: function(data) {
            $('#display').html(data);
            listen_for_message();
             }
  error: function() {
            setTimeOut("listen_for_message()",2000); // if error then call the function after 2 sec
  }
    });
    return;
}

1 Ответ

1 голос
/ 13 января 2012

Попробуйте завершить запросы вручную :

var connection;
function longpoll() {
   if(connection != undefined) {
      connection.abort();
   }

   connection = $.ajax({ 
       ...
       complete: function() {
          longpool();
       }
   });
}

Это также может быть проблема Firefox / firebug (показывает, что прерванные соединения работают), протестируйте ее в Chrome.

ОБНОВЛЕНИЕ:

"Только в Firefox 3.0+ только запросы скрипта и JSONP не могут быть отменены тайм-аутом; скрипт будет работать, даже если он прибудет после истечения времени ожидания."http://api.jquery.com/jQuery.ajax/

...