android-c2dm - Android C2DM 端口号选择

标签 android-c2dm

我注意到 Google C2DM (push) tcp 连接使用端口 5228。我还知道一些防火墙会阻止 80 443 以外的端口(因为 htttp 和 https),这导致很多用户提示他们无法使用 Market例如,使用公司 wifi 在他们的手机上使用 app 或 GTalk。

现在我的问题是:为什么 Google 没有选择 443 或 80 端口作为他们的持久 tcp 连接?

最佳答案

我能想到 Google 可能选择使用 5228 而不是 80 或 443 的原因有几个。

首先,在大多数(但绝对不是全部)情况下,5228 不应该成为问题(即被阻止),因为推送通知主要在设备运行时使用。这意味着他们使用的手机数据连接不会阻止此端口并且没有防火墙。

其次,在可能有防火墙的环境中(即公司内部有 WiFi),http 流量也可能以某种方式被代理或控制。 C2DM 不依赖于标准的 HTTP 协议(protocol),预计将是一个长期的连接。这意味着在 80/443 上运行它可能会在这些环境中导致问题。

第三,这些服务很可能在 C2DM 发布之前使用 5228,并且没有明确的理由来更改它。

根据我的经验,我认为如果他们使用 5228 作为默认值,并在其他情况下尝试回退到 443,那将是理想的(因为肯定有很多情况下 443 可以工作,而 5228 不能工作)。至少在 443 的情况下,与在端口 80 上相比,修改数据的可能性较小,因为该协议(protocol)通常会被加密。但是,443上的连接仍然有可能被提前终止。但是,这种风险在任何网络环境中都存在,尝试也不会失败。

另外需要注意的是,在 443 上启用 C2DM 可能比谷歌看起来更困难,因为他们的分布式前端服务器可能知道如何专门处理 HTTP 的 80/443 流量,并且需要大量重新工作以处理 C2DM。

关于android-c2dm - Android C2DM 端口号选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106318/

相关文章:

android - 当设备收到 C2DM 消息时如何播放声音

android - 注册困惑 Android GCM

android - 使用 C2DM 的最简单方法?

android - 猜测 C2DM 是否已连接的方法

android - Android GCM 上的 registeredOnServer 状态何时过期?

android - 如何从android中的xtify sdk获取PAYLOAD值?

android - C2DM 服务的 Google AuthToken 有效性

android - 单个设备突然停止从我的服务器获取 C2DM 推送

android - 如何从 c2dm 注销?