使用 PHP/JavaScript 从服务器向用户推送通知
Posted
技术标签:
【中文标题】使用 PHP/JavaScript 从服务器向用户推送通知【英文标题】:Push notifications from server to user with PHP/JavaScript 【发布时间】:2012-02-24 18:20:39 【问题描述】:简短:有没有办法将数据从服务器推送到已登录的用户会话,而无需该用户发出 HTTP 请求?
Long(er):我正在 Apache/php/mysql 服务器上构建一个 html5 应用程序,它可以提供给移动设备上的用户(或者可能通过 PhoneGap 应用程序)。
我想让用户知道应用程序何时有新信息可用,而不是通过强制用户执行对服务器的调用或要求 AJAX 调用来收取过多的数据费用(是的,我知道它可以检查对于单字节 cookie,但我宁愿将其设为零)。
一个很好的例子是在两个用户之间发送聊天消息,从一个用户提交给另一个用户。
【问题讨论】:
感谢我收到的反馈,我正在研究 WebSocket。我在以下位置找到了一个很棒的教程:net.tutsplus.com/tutorials/javascript-ajax/… 为什么关闭?这是一个真正的问题...... 这是一个真实的问题,但它的范围很广且不清楚。一个“明显”的答案是“当然”,当然,有一些方法可以在不使用 HTTP 的情况下从服务器推送数据,例如使用任何其他协议。问题似乎是“过多的数据费用”,但另一个协议将如何解决这个问题?看起来“套接字”是答案,但在我看来,根据问题的内容,这并不是一个很明显的建议。也许如果问题得到澄清一点? 【参考方案1】:在现代浏览器中,Websockets 或在旧浏览器中,“long polling”。还有一些库可以抽象出其中的一些(例如comet)。
现在使用的一个非常常见的库是socket.io
,它会自动连接到可用的最佳技术,如果可用则使用 webSockets,如果不可用则回退到其他技术,例如长轮询。
其他一些参考资料:
How do I implement basic "Long Polling"?
COMET (server push to client) on iPhone
More on Long Polling
Is there a difference between long-polling and using Comet
Pushing the web with websockets
Oh HTML5, Push Data to my Mobile
【讨论】:
非常有帮助。我会尽快开始在 Websockets 上做功课。 添加了 socket.io 参考,现在非常有用。【参考方案2】:我推荐Socket.io
它利用了
WebSocket、FlashSocket、HTML 文件(用于 IE)、XHR 长轮询、JSONP 轮询
它是Node.js,这意味着它是非阻塞性质的。
在实时特性中,并发是个大问题
所以 Node.js 和 Socket.io 的非阻塞特性会对您有所帮助
【讨论】:
我对 Node.js 很警惕,但这很有帮助。谢谢!【参考方案3】:ScaleDrone 允许您使用 PHP API client 从 PHP 推送到 JavaScript。
【讨论】:
以上是关于使用 PHP/JavaScript 从服务器向用户推送通知的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP / Javascript 检测应用内浏览器 (WebView)
使用 Parse 和 Swift 从用户向用户发送推送通知时遇到问题