Xpoint
   [напомнить пароль]

HTTP инициирование сервером

Метки: [без меток]
2008-10-28 17:29:50 [обр] Thirteensmay(4/157)[досье]
Похоже я хочу невозможного, но вдруг ;)
Имеем классический виндовый интерфейс приложения на Delphi, т.е. экзешник, постоянное соединение с сервером и т.п. Прикидываем возможность переделки под Web, ибо потребовалась кроссплатформенность. Все бы ничего, но одна засада, интерфейс взаимодействует с особым сервисом устройств, логика приложения организована таким образом что иногда сервер сам, по своей инициативе, по наступлению определенных событий засылает данные в интерфейс. Т.е. инициатором иногда является сервер. Вот собственно говоря возникает вопрос, а можно ли это как то реализовать в рамках стандартного HTTP (Web), т.е. нужен как бы листенер в браузере. Конечно можно было бы наверное использовать Flash или Java апплеты, но нельзя ли как нибудь так... ;) ну так... Ну короче есть ли какие нибудь еще варианты ?
спустя 40 минут [обр] Алексей Рюмин aka Dwarf(33/864)[досье]
Думается, что нет. Опрашивать периодически сервер.
спустя 30 минут [обр] MiRacLe(0/77)[досье]
наиболее близкое к тому, что вы описываете находится в гугле по фразе comet+javascript
спустя 10 часов [обр] AB...(0/233)[досье]
MiRacLe[досье], comet не изменяет типа обработки. Запрос также идет со стороны клиента, а я как понял Thirteensmay[досье] спрашивает двусторонний обмен, чтобы и клиент мог запрашивать и сервер могбы без самостоятельно кидать клиенту информацию без сапроса со стороны клиента.
Thirteensmay[досье] стандартным вариантом это реализовать не получиться. Сервер должен знать 100% наличие и готовность принятия данных клиентом, а это уже без определенного приложения на клиентской стороне реализовать невозможно как уже сказал Алексей Рюмин aka Dwarf[досье].
спустя 2 часа 24 минуты [обр] MiRacLe(0/77)[досье]
AB...[досье] "не читал, но осуждаю" ?
спустя 1 час 37 минут [обр] Филипп Ткачев(3/112)[досье]
MiRacLe[досье], c подобными технологиями существует ряд проблем. Многие сетевые экраны и антивирусы рвут соединения.
спустя 51 минуту [обр] MiRacLe(0/77)[досье]
Филипп Ткачев[досье] да разве ж я сказал что не будет проблем?
Я русским по белому написал: "наиболее близкое".
В дальнейшем критикуя предлагайте что ли свой вариант, а то уже как-то скучно.
спустя 26 минут [обр] Филипп Ткачев(3/112)[досье]
MiRacLe[досье], я не хотел вас критиковать. Простите пожалуйста.
Server Push? http://javascript.ru/ajax/server-push/overview
спустя 11 минут [обр] MiRacLe(0/77)[досье]
Так точно, Server Push ;)
In web development, Comet is a neologism to describe a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it.
спустя 47 минут [обр] Thirteensmay(4/157)[досье]
Хм, интересно, интересно однако... Вполне возможно это оно... в ближайшее время поковыряю. MiRacLe[досье] Промежуточное спасибо ;). AB...[досье] Ну в идеале конечно хотелось бы того про что вы подумали, т.е. чтобы даже изначальная инициация была сервером, но с практической точки зрения вроде должно хватить и предложенного MiRacLe[досье], ну бог с ним, пусть браузер вначале один раз пихнет сервер, а потом ответ будет идти кусками когда серверу надо. Весь вопрос насколько долго можно растянуть этот процесс, как клиент будет понимать эти кусочные факты, и какие вылезут проблемы. Надо ковырять.
спустя 1 день 2 часа [обр] Thirteensmay(4/157)[досье]
Оно ;) MiRacLe[досье], Филипп Ткачев[досье] Спасибо ! Тупо грузим по мере необходимости данные в скрытый IFRAME (простейшие скрипты которые там выполняются по мере загрузки и фактически являются серверными сообщениями), только надо раз в минуту этот ифрейм на клиенте пересоздавать, для очистки, и нейтрализации таймаута серверного скрипта, также раз секунд в 20 пропихивать хоть чтонить, для нетрализации таймаута браузера, это если жестко, на практике же таймауты могут быть существенно больше, но даже в жестком случае получается вполне приемлемо. Со стороны серверного скрипта конечно надо отключить буферизацию, и для кроссбраузерности дополнять каждое сообщение до определенной (минимальную пока еще не определил, но при 1К все нормально) длины, для нейтрализации буферизации уже в браузере (IE, Opera). Проверил в IE6, FF3 и Opera9.5, - вполне.
спустя 5 дней [обр] Василий Свиридов(0/175)[досье]
Я применил слегка другой подход, когда создаётся 2 соединения, одно - постоянное (keep-alive), через которое сервер посылает данные, а другое - то, которым клиент запрашивает данные. Всё это на .net и запрос от клиента внутри приложения перебрасывается на обьект, который содержит соединение для данных открытое заранее. Таким образом я могу делать запросы и сервер может делать свой push используя одно соединение и один механизм.
спустя 14 часов [обр] Thirteensmay(4/157)[досье]
Да завернуть это уже не вопрос, главное сам транспорт, а тут насколько я пролез альтернативы iframe нет.
Powered by POEM™ Engine Copyright © 2002-2005