Длинные запросы (Long Polling)

Длинные запросы являются альтернативой частым запросам, когда требуется максимально быстро получать от сервера новые данные. Реализуется простым XMLHttpRequest.

Со стороны клиента открывается обычное XHR-соединение. После получения ответа тут же открывается следующее:

function subscribe(url) {
  var xhr = new XMLHttpRequest();
 
  xhr.onreadystatechange = function() {
    if (this.readyState != 4) return;
 
    if (this.status == 200) {
      onMessage(this.responseText);
    } else {
      onError(this);
    }
 
    subscribe(url);
  }
  xhr.open("GET", url, true);
  xhr.send();
}

Сервер необходимо настроить таким образом, чтобы он не закрывал соединение.

Теги: