使用 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、HTML、CSS、Javascript 表单安全

使用 PHP / Javascript 检测应用内浏览器 (WebView)

使用 Parse 和 Swift 从用户向用户发送推送通知时遇到问题

使用 PHP/Javascript 测试网络速度

如何在 Visual Studio 负载测试中为每个用户从不同的客户端 IP 向服务器发送请求

我可以使用 Paypal API 从一个用户直接向另一个用户汇款吗?