В настоящее время я реализую своего рода HTTP Push с использованием длинного опроса для браузеров, которые не поддерживают составные ajax-ответы.
Я должен признать, что хотя серверная часть работает нормально, я относительно новичок в разработке javascript внешнего интерфейса и, таким образом, возможно, допустил некоторые очевидные ошибки
Проблема в том, что LongPolling отлично работает на IE 6,7,8 и Firefox (хотя Firefox использует multipart i, я тоже тестировал его с длинными опросами), но в Safari и Chrome входят
браузеры "заняты" состоянием во время запросов ajax. (они показывают курсор ожидания окна, и Safari также показывает индикатор «Загрузка» в строке заголовка)
Это, конечно, нежелательно ..
Вот мой код для длинного опроса на основе Jquery 1.4.1:
function MepSubscribeToQueueLongPoll(name, callback) {
var queueUrl = MepGetQueueUrl(name, "LongPoll");
MepLongPollStep(queueUrl, callback);
};
function MepLongPollStep(url, callback) {
$.ajax({
url: url,
async: true,
cache: false,
success: function (data,status,request) {
callback(request.responseText);
MepLongPollStep(url, callback);
}
});
};
Обратите внимание, что я обхожу функциональность синтаксического анализа данных Jquery, передавая request.responseText непосредственно обратному вызову, потому что Jquery, похоже, не поддерживает составные ответы ajax, и я хотел быть согласованным по всем путям связи.