我有一个项目,我需要在服务器端使用PHP添加Cordova AngularJS推送通知的推送通知,该通知将JSON数组作为输出。我可以使用它来实现聊天等,但我想知道如何在推送通知或访问本机应用程序API中实现它。首先我想使用Javascript SetInterval,但它减慢了应用程序的速度,并且每次都检查API ...
答案 0 :(得分:3)
对于Cordova推送通知,您可以在这里查看: http://phonegappro.com/tutorials/apache-cordova-phonegap-push-notification-tutorial-part-1/
尽管如此,让我们回顾一下使用Web API向客户端发送数据的其他一些方法:
长轮询 - 保持连接在服务器端打开,没有超时或超时,并在想要发送推送通知时返回结果。
使用WebSockets - 打开与服务器的稳定TCP连接并双向传输消息(与HTTP的请求/响应模型不同)。
使用PushManager
- 这是移动设备尚不支持的实验性技术,所以我想这对你来说是不行的。
使用简单轮询 - 不时地轮询服务器以获取新消息。
长轮询和 Web套接字会使服务器超载,如果您有大量并发打开的连接,那么我就不会去那里。此外,Web套接字主要用于客户端之间的通信(服务器将客户端信息传递给两个客户端,然后它们可以自己进行通信而不需要它们之间的服务器中断)。
PushManager 太新了移动设备尚不支持的技术。
对于你想要的东西(移动我猜,你想使用Cordova),并且不知道你实际想要实现什么,我会说#4。我知道你已经尝试过了,但也许会尝试将轮询率降低到每30秒左右。
据我所知,虽然调试它从服务器发送内容似乎并不好看,然后等待30秒的大部分时间直到它出现在客户端上,但是如果你从用户那里想到它的话。 ; s观点您将看到用户不知道服务器何时发送数据,因此它会立即出现。
但是,如果您正在编写聊天客户端,那么我会使用网络套接字,使用服务器连接聊天中的两个(或更多)客户端并让他们直接传递消息。如果您希望聊天服务器支持服务器,只需使用简单的AJAX定期将脚本发送到服务器。
答案 1 :(得分:0)
如果您不希望有超过几千个客户使用您的应用程序,DIY(自己动手)套接字技术(WebSockets,Socket.io等)是可行的。超过几千(我们的许多客户说在5到1万的范围内),您将遇到难度(以及服务器资源和可扩展代码的大量费用)扩展您的服务。
使用像PubNub,Pusher,Ably等托管的实时数据流网络服务将更便宜,更复杂,并且它将起作用。有些托管服务(PubNub肯定 - 我工作 - 完全公开)提供了publish the message in realtime and include a push payload (for GCM, APNS and MPNS) that will also send the push notification if the app is in the background or not running的能力。
使用PubNub BLOCKS,您还可以实现在PubNub网络中运行的服务器端代码,以检查,操作或处理消息,而无需服务器执行任务。这意味着您可以将消息发送给其他第三方服务:将消息翻译成另一种语言,出于任何原因使用AI服务,发送短信/电子邮件/等等。