0

我想构建一个 Android 应用程序,将数据从无线传感器(大约 3 kb/s)流式传输到我的服务器。

要唤醒手机,我发现我不能轻易地使用服务器上的套接字,但需要 GCM 推送通知。但是,如果我实现所有 GCM 的东西只是为了开始流式传输,那么将 GCM 用于数据流也可能更容易,而不是我自己的 websocket 实现。

文档说一个数据包最大为 4 kb,如果设备每秒可以可靠地传输一次,这就足够了。但是由于 GCM 不是为如此快速的间隔和带宽而设计的,有没有人有经验,如果它是可行和可靠的,还是直接打开到我的服务器的连接会更好?

4

1 回答 1

0

我会直接连接到您自己的服务器,主要是因为正如您所说,GCM 服务并不是为此而设计的,如果 Google 认为您使用过多,则有权限制连接并延迟 GCM 通知带宽。我在进行压力测试时亲身经历过这种情况——通知开始变慢,最终使用设备的 gmail 帐户被禁止。

GCM 的一般模式应该类似于:

  1. 服务器上发生了设备需要知道的事情。

  2. GCM 通知会以较小的有效负载发送到设备,例如 CommandNumber = 1。

  3. 设备侦听通知,并且因为 CommandNumber == 1 它以某种方式响应,在这种情况下,这可能会打开一个到您的服务器的套接字。

于 2014-02-19T10:55:07.570 回答