Push-уведомление в клиентском браузере - PullRequest
19 голосов
/ 04 февраля 2011

Я хотел бы создать приложение, в котором, когда пользователь Super нажимает на ссылку, пользователи должны получить уведомление или, скорее, контент, такой как pdf, для доступа к ним на экране.

Вариант использования: Когдаучитель хочет поделиться PDF со своими учениками, он должен иметь возможность уведомить своих учеников о PDF, доступном для скачивания, и для этого должна быть предоставлена ​​ссылка.

Ответы [ 5 ]

24 голосов
/ 04 февраля 2011

Есть несколько способов сделать это.Наиболее поддерживаемый способ - через технику, называемую Comet или long-polling.По сути, клиент отправляет запрос на сервер, а сервер не отправляет ответ, пока не произойдет какое-либо событие.Это создает иллюзию того, что сервер передает клиенту.

Существуют и другие методы и технологии, которые на самом деле позволяют передавать клиенту вместо простого его моделирования (например, веб-сокеты), но многие браузеры не поддерживаютим.

11 голосов
/ 05 февраля 2011

Поскольку вы хотите реализовать это в CakePHP (поэтому я предполагаю, что это веб-приложение), пользователю необходимо открыть «активную» страницу, чтобы получать push-сообщения.

Стоит взглянуть на первые два ответа на этот вопрос, а также подумать о том, как другие сайты могут достичь этого.Сайты, такие как Facebook, BBC, Stackoverflow - все используют методы, чтобы поддерживать актуальность страниц.

Я подозреваю, что Facebook просто использует AJAX, который запускается в цикле / таймере, чтобы периодически получать обновления таким образом, чтобы это выгляделоОт себя.Если запрос на обновление достаточно часто (короткий период времени), он будет выглядеть почти в реальном времени.Если это длительный период времени, это будет выглядеть как тяга.Ключ к поиску правильного баланса между актуальностью и перебором браузера / процессора / сети.

Фактический запрос не должен перебивать систему, но ответ в некоторых приложениях может быть намного больше.В вашем случае данные в каждом направлении крошечные, поэтому вы можете сделать цикл запроса довольно коротким.

Эксперимент!

6 голосов
/ 18 февраля 2011

Посмотрите на php-amqplib и RabbitMQ .Вместе они могут помочь вам реализовать AMQP (расширенный протокол очереди сообщений).По сути, вашу веб-страницу можно обновить, нажав на нее сообщение.

[EDIT] Недавно я наткнулся на Pusher , который я реализовал для проекта.Это служба обмена сообщениями в реальном времени на основе HTML5 WebSocket.Он работает очень хорошо и имеет бесплатный план нижнего уровня.Это также чрезвычайно просто реализовать.

6 голосов
/ 04 февраля 2011

Стандартный протокол HTTP не разрешает передачу с сервера на клиент. Вы можете эмулировать это, используя, например, AJAX-запросы с небольшим интервалом.

5 голосов
/ 14 июня 2012

Проверьте node.js в сочетании с socket.io и express.Отличная отправная точка здесь

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