【发布时间】:2014-07-08 03:49:21
【问题描述】:
我有兴趣为 Android 和可能的 iPhone 应用程序构建实时聊天应用程序。我对 websockets 做了一些背景研究,它们似乎是一个合理的选择。但是,请注意可以随时向用户发送消息,这对于聊天应用程序来说很常见,客户端服务器连接的套接字将永远不允许关闭,否则用户将被切断任何信息流和新消息。
我很好奇,以这种方式使用套接字的永久打开连接来构建我的应用程序会产生不利后果吗?
【问题讨论】:
我有兴趣为 Android 和可能的 iPhone 应用程序构建实时聊天应用程序。我对 websockets 做了一些背景研究,它们似乎是一个合理的选择。但是,请注意可以随时向用户发送消息,这对于聊天应用程序来说很常见,客户端服务器连接的套接字将永远不允许关闭,否则用户将被切断任何信息流和新消息。
我很好奇,以这种方式使用套接字的永久打开连接来构建我的应用程序会产生不利后果吗?
【问题讨论】:
我建议仅在应用程序处于前台时使用套接字连接,一旦应用程序进入后台回退到 GCM 以唤醒设备,然后再次建立套接字连接。这样,应用程序不会占用太多电池。另外,我怀疑iOS是否会长时间允许套接字连接。 这是构建使用套接字连接和推送通知的聊天的示例代码 https://github.com/AppLozic/Applozic-Android-SDK
【讨论】:
客户端的主要缺点是无线电的电池消耗,因为这需要保持数据连接。请注意,这对于任何尝试进行推送的解决方案都是相同的,因此 WebSocket 和例如 WebSocket 之间没有真正的区别。 HTTP 长轮询。如果您希望消息立即到达,则需要建立连接。
在服务器上,主要成本是 RAM。 WebSocket 服务器的设计与 HTTP 服务器不同,它们每个连接不使用一个线程,因此扩展到大量并行连接本身并没有问题。
【讨论】: