Как реализовать шаблон наблюдателя в PHP + Javascript / jQuery? - PullRequest
1 голос
/ 27 октября 2009

Так же, как в SO, где кто-то отвечает на вопрос, если кто-то ответил на указанный вопрос, появится уведомление (через AJAX?). Мой единственный способ несколько повторить это - включить тайм-аут в мой скрипт, который выбирается, если обновление происходит каждые n секунд. Есть ли способ сделать это, используя шаблон наблюдателя на PHP + Javascript (w / jQuery)?

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

Вы должны взглянуть на ReverseAJAX или COMET методологий.

Согласно википедии

Обратный Ajax относится к дизайну Ajax шаблон, который использует долгоживущий HTTP подключения для обеспечения малой задержки связь между веб-сервером и браузер В основном это способ отправка данных с клиента на сервер и механизм отправки данных с сервера вернуться в браузер.

EDIT:

Я предлагаю вам реализовать следующий подход, это просто реализовать. В качестве примера я использую ответ с помощью stackoverflow.

  1. После завершения загрузки страницы ответов. Инициировать запрос AJAX (асинхронный, чтобы он не блокировал пользовательский интерфейс)
  2. И он будет искать новые обновления на стороне сервера (опрашивая БД, чтобы проверить, добавлены ли новые ответы)
  3. И возвращать данные только в браузер, если есть обновление. в противном случае сохраняйте спокойствие.
  4. После возврата данных клиенту клиент должен вызвать другой запрос AJAX и дождаться обновлений.
  5. Повторите шаги 2–4 для оставшегося времени жизни страницы.

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

0 голосов
/ 27 октября 2009

Если вы используете тайм-ауты для запроса обновлений на сервере, его все равно можно считать своеобразной реализацией шаблона Observer. К сожалению, это невозможно сделать наоборот. Если сервер заканчивает отвечать на основной HTTP-запрос, клиент просто «слушает» его. Единственный способ сделать это - сделать асинхронный запрос от клиента.

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