我想构建一个Android应用程序,将来自无线传感器(大约3 kb / s)的数据流式传输到我的服务器。
为了唤醒手机,事实证明我无法轻松使用服务器上的套接字,但需要GCM推送通知。但是,如果我实现所有GCM的东西只是为了开始流式传输,那么GCM也可以更容易地用于数据流,而不是我自己的websocket实现。
文档说数据包最大可以达到4 kb,如果设备可以每秒传输一次,那就应该足够了。但是由于GCM不是为这种快速间隔和带宽而设计的,有没有人有经验,如果它是可行和可靠的,或者打开直接连接到我的服务器会更好吗?
答案 0 :(得分:0)
我会直接连接到您自己的服务器,主要是因为正如您所说,GCM服务并非真正为此而设计,Google有权限制连接并延迟GCM通知,如果他们认为您是使用太多带宽。我在进行压力测试时自己也经历过这种情况 - 通知开始变慢,最终gmail帐户禁止使用的设备。
GCM的一般模式应该类似于:
设备需要了解的服务器上发生了一些事情。
GCM通知以较小的有效负载发送到设备,例如CommandNumber = 1。
设备侦听通知,因为CommandNumber == 1它以某种方式响应,在这种情况下可能会打开服务器的套接字。