我试图在我的基于PHP的网站上实现推送通知。 目标是让类似于Stackoverflow和其他网站的信息实时通知用户的东西。
我使用MysqL作为我的数据库,Apache作为我的服务器,并且正在考虑使用Amazon-SNS作为这些通知的框架,因为这是该服务的目标。
我从文献中了解如何以编程方式设置sending.PHP和receiving.PHP页面。 我假设这个sending.PHP页面只涉及$_POST['message']到某个页面,但是从那里我真的迷失了。
如果有东西可以帮助我理解receiving.PHP页面对于推送通知的外观,我将不胜感激。
Amazon SNS Python Boto – 如何创build要发送的消息
加工
HTML5rocks在这里提供了一个很好的解释,关于websockets是如何工作的。
那么你可以使用支持它的浏览器的Websockets(因为所有的现代浏览器提供良好的支持)
入门
您可以开始使用这些资源:
HTML5ROCKS
NETTUTS +
Nettuts +为websocket入门提供了一个很好的教程。
支持Websockets的浏览器
倒退
您可以使用Modernizr来检测客户端的浏览器是否支持Websocket,并且可以使用Flash代替Websocket。
对于这些项目,当在没有WebSocket的浏览器上运行或禁用它时,将使用web-socket-js 。 它比原生效率要低,但是比长轮询还要低得多。
任何带有Flash的浏览器都可以使用web-socket-js shim / polyfill来支持WebSocket。
参考:
替代WebSockets
https://softwareengineering.stackexchange.com/questions/33713/is-there-an-alternative-to-html-web-sockets-Now-that-firefox-4-has-disabled-the
我只是想分享一下我的实际执行情况。 我决定与一个伟大的SAAS, Pusher ,因为有很多具有挑战性的问题实施推送通知,因为我在阅读@ Virendra的优秀答案中的链接意识到,推者为您解决。
最令我印象深刻的是,你需要编写很少的代码才能完成这项工作。 见下文。 我的服务器端是在PHP中( Pusher有许多语言的库 )。
require('/application/thirdParty/pusher-html5-realtime-push-notifications/lib/squeeks-Pusher-PHP/lib/Pusher.PHP'); require('/application/thirdParty/pusher-html5-realtime-push-notifications/config.PHP'); $pusher = new Pusher(APP_KEY,APP_SECRET,APP_ID); foreach($recipients as $row){ $channel='my-channel'.$row->recipient_id; $pusher->trigger($channel,'notifications',array('message' => $row->message,'notification_id' => $row->notification_id) ); }
这里是HTML / JS(不要被淹没,大部分代码只是填充传入通知的小圆圈和列表,因为Stackoverflow和其他人都这样做):
<script src="/application/thirdParty/pusher.min.js"></script> <script> var myID=179; // would receive notification if myID matches $row->recipient_id above; var myChannel = pusher.subscribe('my-channel'+myID); myChannel.bind('notifications',function(data) { var message=String(data.message),url='/notifications/'+data.notification_id,icon='<i class='icon-heart'></i>',urlText=icon+message; var notificationRow='<li><a href='+url+'>'+urlText+'</a></li>'; $('#notificationsDropdownList').prepend(notificationRow); if(notificationCircleCount==0){ notificationCircleCount++; $notificationCircle.show(); $notificationCircleCount.html(notificationCircleCount); } else{ notificationCircleCount++; $notificationCircleCount.html(notificationCircleCount); } console.log('Pusher happened'+data.message); } //function ); //myChannel </script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。