Напротив AJAX - PullRequest
       14

Напротив AJAX

4 голосов
/ 15 февраля 2011

Есть ли способ реализовать коммуникацию, инициируемую сервером, которая обновляет страницу (не всю страницу) в PHP?

Другими словами, есть ли способ реализовать «модифицированный» AJAX, когда сервер инициируетсвязь

Ответы [ 6 ]

4 голосов
/ 15 февраля 2011

Возможно, вы думаете о технологиях push, таких как COMET или длительный опрос.См http://en.wikipedia.org/wiki/Comet_(programming) и http://en.wikipedia.org/wiki/Long_polling#Long_polling

2 голосов
/ 15 февраля 2011

Невозможно открыть соединение с сервера клиенту. Вам нужно сделать какой-то опрос от клиента к серверу. Вы можете просмотреть COMET или просто опросить сервер по истечении заданного периода времени, чтобы проверить наличие нового контента.

0 голосов
/ 28 августа 2015

Что вам нужно, это SSE (события, отправленные сервером). Единственным недостатком является то, что он еще не поддерживается ни одним из IE, поэтому вам, вероятно, потребуется также реализовать некоторые функции обнаружения (например, modernizr.js ) и использовать либо long- опрос или SSE в зависимости от того, поддерживает ли ваш браузер SSE (или просто используйте SSE polyfill , к счастью, их достаточно).
Почему вы, вероятно, захотите реализовать оба метода вместо использования хорошо поддерживаемого long-polling ? Отправленные сервером события против опроса .

Вот учебник по реализации PHP : http://www.w3schools.com/html/html5_serversentevents.asp

И хорошее объяснение того, что SSE дает вам:

HTML5 представил API для работы с событиями, отправляемыми сервером. Основная идея SSE проста: веб-страница подписывается на источник событий на веб-сервере, который передает обновления. Веб-странице не нужно постоянно опрашивать сервер, чтобы проверить наличие обновлений (как мы сделали с опросом AJAX) - они приходят автоматически. Обратите внимание, что скрипт на стороне клиента может только прослушивать обновления, он не может ничего публиковать (сравните это с веб-сокетами, где клиент может подписываться и публиковаться). Поэтому все функции публикации выполняются сервером.

0 голосов
/ 15 февраля 2011

Вы говорите о «обратном аяксе», иногда «комете».Обратный ajax на самом деле не является частью спецификации http, это что-то вроде хака.По сути, это подразумевает, что HTTP-запрос остается открытым, а сервер отправляет ответы каждый раз.Это не для беззаботного, хотя и, честно говоря, для 99% приложений, вероятно, не стоит стрессаВам понадобится комет-сервер для обработки и управления всеми открытыми соединениями.Серьезно подумайте об автоматическом обновлении обычных вызовов Ajax или чего-то подобного.

0 голосов
/ 15 февраля 2011

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

0 голосов
/ 15 февраля 2011

Вам нужно взглянуть на что-то, называемое множеством имен, таких как Comet, AJAX Push, Server Push и т. Д.

http://en.wikipedia.org/wiki/Comet_(programming))

Он сохраняет соединение HTTP открытым для получениясвязь с сервером в определенный момент времени.

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