JQuery & PHP - я могу нажать с сервера? - PullRequest
10 голосов
/ 18 ноября 2010

Я только начинаю смотреть на JQuery;до сих пор все было PHP.

Просто любопытно: если сервер обнаруживает событие и хочет обновить браузер пользователя, могу ли я выполнить push-запрос на сервере, или клиент должен опросить?

Ответы [ 5 ]

12 голосов
/ 18 ноября 2010

Клиент должен опросить, но вы можете сделать длительный опрос , т. Е. Поддерживать запрос в активном состоянии до тех пор, пока на сервере не будет события для его возврата (т. Е. Завершить запрос).можно использовать веб-сокеты.

5 голосов
/ 18 ноября 2010

Протокол HTTP работает по принципу запрос-ответ, что означает, что сервер может генерировать ответ только после запроса от клиента.Это означает, что сервер не может отправить ответ клиенту, не получив запрос в первую очередь.Это не проблема PHP, это проблема HTTP.Так что нет, вы не можете подтолкнуть, клиент должен сделать запрос, или опрос .Вы можете посмотреть на длинный опрос, как предположил Алекс.

3 голосов
/ 18 ноября 2010

Это на самом деле не слишком связано с jquery, но с самим Http.

В принципе, сервер не может активно что-либо передавать клиенту, есть два возможных решения:

  1. Сохраните соединение Http, не закрывая его.

  2. Опрос

3 голосов
/ 18 ноября 2010

Вы можете использовать "комету", чтобы сделать это.PHP - ужасный язык для кометы.Одним из наиболее популярных методов выполнения Comet в PHP (такого рода работ) является длительный опрос.

Идея длинного опроса состоит в создании AJAX-запроса к серверу.Сервер принимает соединение, но не отвечает (т.е. цикл while с sleep(1) в нем), пока не произойдет событие.Это могут быть секунды, минуты и т. Д.

Чтобы длительный опрос "работал", вам необходимо убедиться, что время соединения не истекает очень быстро, поэтому настройте выполнениемаксимальное время (минуты или неограниченно, если возможно).Вам также потребуется написать код на клиенте, который обрабатывает отключение / тайм-аут сервера.Когда это произойдет, новый запрос должен быть запущен.

Надеюсь, это поможет!

3 голосов
/ 18 ноября 2010

У вас может быть клиент, использующий механизм длинного опроса, такой как комета и т. Д., Но на самом деле нет способа действительно «подтолкнуть».

...