[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Long Polling / Comet
Catzilla
Всем доброго времени суток :)
Решил написать сюда, поскольку дэдлайн близок, нервы на пределе, а я оставил клиентскую часть проекта "на потом", как самое легкое (похоже, я жестоко ошибся).

Пытаюсь реализовать механизм Long-Poll запросов.

Суть проблемы: при выполнении длинного запроса, пока открыто соединение, браузер не выполняет других запросов к сайту проекта (как бы подвисает).
Таким образом, когда открыто соединение от встраиваемого виджета, невозможно открыть основной сайт проекта в том же браузере.

Сутки гугления помогли найти лишь беглое упоминание, что для решения этой проблемы нужно выполнять Long-Poll запросы к субдомену (чтобы обойти ограничения браузеров).

Сделал следующим образом:
local.host - основной сайт
widget.local.host - тело iframe, встроенного в основной сайт (виджет)
poll1.widget.local.host - сюда отправляются Long-Poll запросы с помощью скрипта, загруженного в iframe

Однако, это не помогло - основной сайт по прежнему виснет при попытке открыть его во время активного запроса.

Также пробовал различные технологии выполнения запросов - CORS (Cross-Origin-Resourse-Sharihg), JSONP. Никаких изменений.

Код "отправлятеля", вариант с JSONP (jquery)
Свернутый текст
function LongPool() {
$.ajax({
url: "http://pool1.widget.local.host/api/pool_client?tid=" + TicketID + "&lid=" + LastID + "&callback=?"),
dataType: 'jsonp',
async: true,
cache: false,
success: function (data) {
if (typeof (data.error) !== "undefined") {
console.log("PRO.Widget.Pool: Server returned error: \"" + data.error + "\"");
return;
}
if (typeof (data.result) !== "undefined") {
if (typeof (data.result.messages) !== "undefined") {
$.each(data.result.messages, function (i, message) {
LastID = message.ID;
alert(i + " : " + message.Body);
});
}
}

LongPool();
},
error: function () {
alert("error");
}
}
);
}


В чем моя ошибка?
Может кто-то сталкивался в своей практике с такой проблемой?
Буду очень благодарен за ответ.

P.S. проблема точно не в сервере, поскольку с другого браузера сайт открывается.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.