Android 谷歌云消息传递-CCS(XMPP)与HTTP服务器

Android 谷歌云消息传递-CCS(XMPP)与HTTP服务器,android,push-notification,google-cloud-messaging,Android,Push Notification,Google Cloud Messaging,我已经看过文件了 我能看到的唯一区别是,基于CCS(XMPP)的服务器允许在android设备和GCM服务器之间直接进行双向通信 您选择CCS(XMPP)而不是HTTP(反之亦然)还有其他原因吗?CCS(XMPP)是异步的,这意味着它应该比HTTP更快。它还使用设备上现有的GCM连接从应用程序向服务器发送消息(这节省了电池,因为您不必打开自己与服务器的连接) 另一方面,HTTP编码要简单得多,因此除非您需要双向功能或需要以非常高的速度发送消息,否则我会坚持使用HTTP。您可以通过对gcm的一个

我已经看过文件了

我能看到的唯一区别是,基于CCS(XMPP)的服务器允许在android设备和GCM服务器之间直接进行双向通信

您选择CCS(XMPP)而不是HTTP(反之亦然)还有其他原因吗?

CCS(XMPP)是异步的,这意味着它应该比HTTP更快。它还使用设备上现有的GCM连接从应用程序向服务器发送消息(这节省了电池,因为您不必打开自己与服务器的连接)


另一方面,HTTP编码要简单得多,因此除非您需要双向功能或需要以非常高的速度发送消息,否则我会坚持使用HTTP。

您可以通过对gcm的一个HTTP调用一次向1000台设备广播一条消息。对于广播而言,http优于CCS。

来自谷歌文档:

您可以继续使用HTTP请求机制向GCM服务器发送消息,与使用XMPP的CCS并行。CCS的一些好处包括:

XMPP的异步特性允许您用更少的资源发送更多的消息

通信是双向的,不仅服务器可以向设备发送消息,设备还可以将消息发送回服务器


该设备可以使用与接收相同的连接发回消息,从而延长电池寿命。

不幸的是,谷歌云平台将在一年后禁用XMPP API


我会选择XMPP来节省设备的电池,因为它是当今最大的问题之一

XMPP消息与HTTP消息的不同之处在于:

上行/下行消息

  • HTTP:仅下游,云到设备
  • XMPP:上游和下游(设备到云、云到设备)
消息传递(同步或异步)

  • HTTP:同步。应用服务器以HTTP POST请求的形式发送消息,并等待响应。此机制是同步的,阻止发件人发送另一条消息,直到收到响应。
  • XMPP:异步。应用服务器通过持久的XMPP连接以全速向其所有设备发送/接收消息。XMPP连接服务器异步发送确认或失败通知(以特殊ACK和NACK JSON编码的XMPP消息的形式)
JSON

  • HTTP:JSON消息作为HTTP POST发送
  • XMPP:封装在XMPP消息中的JSON消息
纯文本

  • HTTP:作为HTTP POST发送的纯文本消息
  • XMPP:不支持
多播下行发送到多个注册令牌

  • HTTP:支持JSON消息格式
  • XMPP:不支持

“CCS(XMPP)是异步的,这意味着它应该比HTTP更快”:简单的异步ajax调用不应该类似吗?此外,在任何给定点都有一个1000毫秒的节流阀。。。所以,如果有许多用户与ccs进行通信,这应该是一个问题。但是,如何通过http向客户端进行广播呢?除非客户端正在ping服务器以进行广播,否则您将向gcm服务器发送http post请求。它将向设备广播。Gcm服务器是我们的服务器和移动设备之间的中间连接。