Сервер может запросить браузер клиента? - PullRequest
0 голосов
/ 10 июля 2011

Я думал о событиях синхронизации между клиентом и сервером.Общая идея заключается в том, что клиент должен периодически запрашивать сервер для проверки измененных данных.Проблема в том, что ненужные запросы происходят со стороны клиента, даже если на стороне сервера ничего не изменилось.Поэтому я подумал, что возможно запросить браузер клиента, когда произошло событие, но я не уверен, возможно это или нет.В последние дни я слышал, что это будет возможно с HTML 5.

Можно ли запросить браузер клиента с сервера в сети?Если это возможно, так это плохая практика?Что может быть распространено для запроса клиента?

Ответы [ 3 ]

1 голос
/ 10 июля 2011

HTML5 позволяет серверу получать PUSH-уведомления для клиента благодаря WebSocket API . Вам понадобится сервер WebSocket . Есть много реализаций там. Единственная проблема с этой спецификацией - все еще проект и может быть изменен. Например, спецификация недавно изменилась в браузере Google Chrome. Так что пока это не получит широкой поддержки.

1 голос
/ 10 июля 2011

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

опрос / толкающий вопрос

0 голосов
/ 10 июля 2011

Сервер не «запрашивает» клиента, скорее клиент инициализирует беседу, открывая HTML 5 WebSocket. Затем этот сокет остается открытым, и сервер может в любое время отправить данные обратно клиенту.

Вы можете сделать это в HTML 4, используя «длинный опрос», когда клиент делает запрос, и ответ также остается открытым в течение более длительного периода. Проблема здесь в том, что клиент не может отправить другой запрос на тот же сокет, поэтому ему необходимо держать два сокета открытыми для сервера - один для отправки запроса, другой для полученных ответов. Это плохо, только если у вас есть много клиентов, подключенных к серверу, и вы уже ограничены количеством соединений, которые может обработать ваш сервер.

В любом случае вы хотите настроить сервер на использование «неблокирующих» (NIO) соединений, чтобы ему не требовался один поток на клиента, поскольку кажется, что обработка чего-либо более чем нескольких тысяч одновременных потоков приносит сервер до остановки. Используя неблокирующее решение, теоретически вы можете иметь 50 тысяч или более соединений на экземпляр сервера, хотя насколько это будет полезно, сомнительно из-за количества запросов, которые он может быстро обработать с таким количеством соединений. Если каждый клиент делает запрос в секунду, вы будете обрабатывать 50 запросов в миллисекунду, что вряд ли даст вам достаточно времени, чтобы сделать что-нибудь подходящее, скажем, к базе данных.

Смотрите следующие ссылки:

http://blog.maxant.co.uk/pebble/2011/06/21/1308690720000.html

http://blog.maxant.co.uk/pebble/2011/05/22/1306092969466.html

http://blog.maxant.co.uk/pebble/2011/03/05/1299360960000.html

...