微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

推送通知如何工作?

我试图在我的基于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] 举报,一经查实,本站将立刻删除。

相关推荐