将通知推送到客户端浏览器

我想创建一个应用程序,当超级用户点击链接时,用户应该获得通知,或者更确切地说是pdf等内容,以便他们在屏幕上访问。

使用案例:当教师想与他的学生分享PDF时,他应该能够通知他的学生有关可下载的PDF文件,并且必须提供链接来做同样的事情。

由于您希望在CakePHP中实现此function(因此我假设它是基于Web的应用程序),因此用户必须打开“活动”页面才能接收推送消息。

值得看看前两个答案,但也要考虑其他网站如何实现这一目标。 像Facebook,BBC,Stackoverflow这样的网站都使用技术来保持页面最新。

我怀疑Facebook只是使用一些在循环/计时器中运行的AJAX来定期提取更新,使其看起来像推送。 如果更新请求通常足够(短时间段),它几乎看起来是实时的。 如果它是一个很长的时间段,它看起来像一个拉。 在最新和浏览器/处理器/网络颠簸之间找到适当的平衡是关键。

实际的请求不应该破坏系统,但在某些应用程序中的回复可能会大得多。 在您的情况下,每个方向的数据都很小,因此您可以使请求循环非常短。

实验!

有几种方法可以实现这一目标。 最受支持的方式是通过称为Comet或长轮询的技术。 基本上,客户端向服务器发送请求,并且服务器在某些事件发生之前不发送响应。 这给出了服务器推送到客户端的错觉。

还有其他方法和技术实际上允许推送到客户端而不是仅仅模拟它(即Web套接字),但许多浏览器不支持它们。

标准HTTP协议不允许从服务器推送到客户端。 您可以通过使用小间隔的AJAX请求来模拟这一点。

看看php-amqplib和RabbitMQ 。 它们可以帮助您实施AMQP(高级消息队列协议)。 基本上,您的网页可以通过向其发送消息来进行更新。

[编辑]我最近遇到过Pusher ,我已经为项目实施了。 它是一个HTML5 WebSocket驱动的实时消息服务。 它运作良好,并有一个免费的底层计划。 它的实现也非常简单。

检查node.js与socket.io和express的结合。 这里有很好的起点