JQuery & PHP - могу ли я нажать с сервера?

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

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

Ответ 1

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

В противном случае вы можете использовать веб-сокеты.

Ответ 2

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

Ответ 3

У вас может быть клиент с использованием механизма долгого опроса, такого как комета, и т.д., но нет никакого способа действительно "толкнуть".

Ответ 4

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

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

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

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

Ответ 5

Это не то, что действительно связано с jquery, а с Http.

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

  • Храните Http-соединение без его закрытия.

  • Опрос