2009-03-14 2 views
3

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

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

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

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

+0

можете ли вы дать нам дополнительную информацию о том, что вы пытаетесь сделать. Я ценю, что это действительный «общий» вопрос, но специфические особенности вашего дела (если есть) помогут справиться с ответами. например, вы пишете SO-конкурирующий сайт ;-) или клиент мгновенного обмена сообщениями? –

+0

Lol no, а не соперник SO. В основном я пытаюсь реализовать своего рода «привязку данных» по сети, к нескольким соединениям или, по крайней мере, исследовать ее возможности. – devios1

ответ

5

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

Что вы ищете, это Comet.

+0

Ах, да, это звонит звонок - длительный запрос. Проблема заключается в том, что он создает внешний вид постоянно загружаемой веб-страницы. Лично я нахожу этих ужасных. – devios1

0

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

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

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

0

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

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

1

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

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

+0

Увлекательная концепция!Вы полагаете, что можно было бы написать невидимую флеш-компоненту, которая устанавливает соединение tcp, и в зависимости от сообщения с сервера может вызвать определенные частичные обновления страницы? – devios1

+0

Да, хотя плагин Flash должен быть уже установлен. Я больше разбираюсь в Silverlight, поэтому вы можете определенно сделать то, что вы описываете, поскольку оно имеет хорошие перехватывания на HTML-странице хостинговой страницы. Silverlight также может использовать C#, а Flash - ActionScript (yuk). – sipwiz

+0

Да Silverlight определенно более привлекательный вариант с точки зрения развития, но я думаю о скорости принятия. – devios1

Смежные вопросы