Направить уведомление клиенту клиента

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

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

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

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

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

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

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

Это можно сделать несколькими способами. Самый поддерживаемый способ – это метод, называемый Comet или длительный опрос. В принципе, клиент отправляет запрос серверу, и сервер не отправляет ответ, пока не произойдет какое-либо событие. Это дает иллюзию, что сервер нажимает на клиента.

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

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

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

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

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