我想创建一个应用程序,当超级用户点击链接时,用户应该收到通知,或者像PDF这样的内容,以便他们在屏幕上访问。
用例:当老师想与他的学生分享PDF时,他应该能够通知他的学生有可供下载的PDF,并提供一个链接来完成下载。
我想创建一个应用程序,当超级用户点击链接时,用户应该收到通知,或者像PDF这样的内容,以便他们在屏幕上访问。
用例:当老师想与他的学生分享PDF时,他应该能够通知他的学生有可供下载的PDF,并提供一个链接来完成下载。
有几种方法可以实现这个目标。最受支持的方法是通过一种称为Comet或长轮询的技术。基本上,客户端向服务器发送请求,服务器在某些事件发生之前不会发送响应。这给人一种服务器正在向客户端推送数据的假象。
还有其他方法和技术,实际上允许向客户端推送数据而不仅仅是模拟该过程(即Web Sockets),但许多浏览器不支持它们。
鉴于您希望在CakePHP中实现此功能(因此我想这是一个基于网络的应用程序),用户必须打开一个“活动”页面才能接收推送消息。
值得一提的是,可以看看前两个答案,还要考虑其他网站如何实现此功能。像Facebook、BBC和Stackoverflow这样的网站都使用技术来保持页面更新。
我猜测Facebook只是使用一些在循环/计时器中运行的AJAX以周期性地拉取更新,以使其看起来像是推送。如果更新请求频率足够高(短时间段),它几乎会实时显示。如果它是长时间段,则会看起来像是一个拉取。找到最适合实时性和浏览器/处理器/网络压力的平衡是关键。
实际请求不应该影响系统,但在某些应用程序中,回复可能会更大。在您的情况下,每个方向上的数据都很小,因此您可以使请求循环相当短。
尝试一下吧!
标准的HTTP协议不允许服务器向客户端推送数据。你可以通过使用例如小间隔的AJAX请求来模拟这个功能。
[编辑] 我最近遇到了Pusher ,并已经在一个项目中实施。它是一个由 HTML5 WebSocket 提供支持的实时消息传递服务。它工作得非常好,并且拥有一个免费的底层计划。此外,它也非常易于实现。
在IT技术方面,推荐使用node.js、socket.io和express的组合。这里有一个很好的起点链接