Форум сайта python.su
Есть браузерное приложение. Есть постоянно запущенное серверное приложение. Общаются через mod_python (просьба не ругаться).
Серверное приложение достаточно умное и может запоминать произвольную информацию о своих клиентах.
Мне нужно сделать нотификацию подключенных web-приложений. Как это можно сделать?
Интересны любые способы. Доступ к серверу полный.
На сколько я в курсе, браузер (по http 1.1) имеет постоянное соединение с сервером. Каким-то образом можно найти тот самый сокет, который связан с браузером и отправить в него новый пакет? Если да, то как браузер этот пакет будет обрабатывать?
Офлайн
Не сервер обращается к клиенту, а клиент обращается к серверу. HTTP протокол строится на простой модели запрос-ответ и всё тут. То, чего вы хотите, не входит в протокол и клиент после получения ответа от сервера больше ничего не ждёт. Да, есть такое в HTTP протоколе как Keep-Alive, но оно не для этого придумано. Обычно клиентское приложение опрашивает сервер с некоторой периодичностью (Ajax), таким образом сервер может оповестить клиента о наступлении какого-либо события.
Офлайн
poltergeistДа. Но есть работы, которые ведутся в нужном вам направлении. Вот вам точка отправки: http://googleresearch.blogspot.com/2009/11/2x-faster-web.html
HTTP протокол строится на простой модели запрос-ответ и всё тут
Офлайн
regall Ага, стоит только подождать несколько лет, пока эти технологии приживутся или не приживутся:)
Офлайн
Сервер за NAT не зайдет, так что открывать им соединение - бессмысленно.
Держать открытое клиентом соединение вечно - тоже большого выигрыша не дает. Сокеты заканчиваются.
Остается только классический AJAX
Отредактировано (Дек. 19, 2009 01:53:51)
Офлайн
poltergeistЗачем ждать, там Гугулы уже выложили пример сервера и клиента на C. Вполне можно копать и пробовать.
regall Ага, стоит только подождать несколько лет, пока эти технологии приживутся или не приживутся
Офлайн
comet ?
В частности long polling или флешь.
http://en.wikipedia.org/wiki/Comet_(programming)
Отредактировано (Дек. 22, 2009 12:39:50)
Офлайн
просмотрел статью про web-сокеты: http://habrahabr.ru/blogs/webdev/79038/
и в этой связи: http://code.google.com/p/pywebsocket/
Офлайн
проблем нету, т.к. у тебя на каждый процесс живет свой хэндлер, у него и открыт сокет к клиенту.
по этому это делают с использованием чегото вроде twisted/tornado/nevow - того что позволет крутить обработку не запуская кучи инстансов. так что судя по всему мод_питон не очень хорошо укладывается, может и можно под ним, но никто так не делает
Офлайн