Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

window.EventSource = function(url) { // использовать эту его имитацию,

var xhr; // HTTP-соединение...

var evtsrc = this: // Используется в обработчиках,

var charsReceived = 0; // Так определяется появление нового текста

var type = null; // Для проверки свойства type ответа,

var data = ""; // Хранит данные сообщения

var eventName = "message": // Значение поля type объектов событий

var lastEventld = ""; // Для синхронизации с сервером

var retrydelay = 1000: // Задержка между попытками соединения

var aborted = false: // Установите в true, чтобы разорвать соединение

// Создать объект XHR

xhr = new XMLHttpRequest:

// Определить обработчик события для него

xhr.onreadystatechange = function {

switch(xhr.readyState) {

case 3: processData: break; // При получении фрагмента данных

case 4: reconnectO: break; // По завершении запроса

}

};

// И установить долгоживущее соединение

connect;

// Если соединение было закрыто обычным образом, ждать секунду

// и попробовать восстановить соединение

function reconnect {

if (aborted) return; // He восстанавливать после

// принудительного прерывания

if (xhr.status >= 300) return;

// He восстанавливать после ошибки

setTimeout(connect, retrydelay); // Ждать и повторить попытку

};

// Устанавливает соединение

function connect {

charsReceived = 0; type = null; xhr.open("GET", url);

xhr.setRequestHeader(“Cache-Control", "no-cache");

if (lastEventld)

xhr.setRequestHeader("Last-Event-ID", lastEventld);

xhr.send;

}

// При получении данных обрабатывает их и вызывает обработчик onmessage.

// Эта функция реализует работу с протоколом Server-Sent Events

function processData {

if (!type) { // Проверить тип ответа, если это еще не сделано

type = xhr.getResponseHeader(’Content-Type’);

if (type !== "text/event-stream") {

aborted = true;

xhr.abort;

return;

}

}

// Запомнить полученный объем данных и извлечь только ту часть ответа,

// которая еще не была обработана,

var chunk = xhr.responseText.substring(charsReceived);

charsReceived = xhr.responseText.length;

  • Читать дальше
  • 1
  • ...
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: