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

时间:2011-02-04 15:09:39

标签: php javascript jquery ajax cakephp

我想创建一个应用程序,当超级用户点击链接时,用户应该收到通知,或者更喜欢pdf等内容,以便他们在屏幕上访问。

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

5 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:11)

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

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

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

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

实验!

答案 2 :(得分:6)

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

答案 3 :(得分:6)

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

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

答案 4 :(得分:5)

将socket.js与socket.io和express结合使用。伟大的起点here