Какой лучший способ для сервера отправлять сообщения веб-клиенту? - PullRequest
3 голосов
/ 15 марта 2009

Ссылки на статьи также приветствуются - я не знаю терминологию для поиска.

Я хочу узнать, как веб-приложение может обеспечивать связь между сервером и клиентом. Я знаю, что сеть не была разработана для этого и что это было чем-то вроде препятствия, и мне просто интересно, каково это состояние и каковы лучшие практики.

Альтернативой является постоянный или случайный опрос через ajax, но возможно ли, чтобы веб-серверы поддерживали соединения с состоянием с веб-клиентом?

Редактировать: Еще один способ задать этот вопрос - как StackOverflow сообщает странице, что для нее доступны новые сообщения для отображения этой маленькой полоски вверху?

Ответы [ 4 ]

5 голосов
/ 15 марта 2009

StackOverflow опрашивает сервер, чтобы проверить, есть ли еще данные.

То, что вы ищете, это Комета .

1 голос
/ 15 марта 2009

Чтобы получить истинную двустороннюю связь из браузера, вам нужно использовать технологию плагинов, такую ​​как Silverlight, Flash и др. Эти плагины могут создавать TCP-соединения, которые могут устанавливать двустороннее постоянное соединение с сокетом сервера. Обратите внимание, что вы не можете установить TCP-соединение с HTTP-сервером, поэтому вам нужно создать дополнительный серверный агент для обратной связи с браузером.

По сути, это модель развертывания, полностью отличающаяся от того, что используют такие сайты AJAX, как Stackoverflow, Gmail и т. Д. Все они полагаются на браузер, опрашивающий сервер с установленными интервалами.

0 голосов
/ 15 марта 2009

Вы не можете, HTTP не имеет состояния. Давным-давно Netscape реализовал HTTP Push, но это не было успехом.

Я бы использовал опрос с веб-сервисом или подобным; ни один плагин (то есть Flash, Java, Silverlight) не будет иметь прав в своей песочнице для использования необработанных сокетов, поэтому попытка реализовать его таким способом будет пустой тратой времени.

0 голосов
/ 15 марта 2009

Веб-браузеры действительно не настроены для обработки такого рода сообщений. Связь является улицей с односторонним движением, где веб-сервер прослушивает порт (обычно 80 или 443) для получения информации, которая будет отправлена ​​на него.

Я только что прочитал ссылку на комету, и это интересный подход, но нужно помнить, что он все еще технически открывается клиентом. Сервер отправляет код для его выполнения, но браузер в конечном счете контролирует и определяет, когда сервер связывается с ним.

В современных веб-браузерах сервер никогда не сможет технически выполнить отправку ему сообщения без помощи браузера. Технически вы могли бы обойти это, выполнив некоторый элемент управления Active X на клиентском компьютере ... но я не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...