2014-05-20 71 views
1

我有兴趣为Android和可能的iPhone应用程序构建实时聊天应用程序。我已经对websockets进行了一些背景研究,看起来这是一个合理的选择。然而,注意到消息可以在任何时候发送给用户,这在聊天应用程序中是很常见的,因此客户端服务器连接的套接字永远不会被允许关闭,否则用户将被切断任何信息流和新消息。适用于Android的Websockets聊天应用程序

我很好奇,以这种方式使用套接字的永久打开连接来构建我的应用程序会产生不利后果吗?

回答

2

客户端的主要缺点是无线电的电池消耗,因为这需要保持数据连接。请注意,对于任何试图进行推送的解决方案,这都是一样的,所以WebSockets和例如HTTP长轮询。如果你想要消息立即到达,你需要一个连接。

在服务器上,主要成本是RAM。 WebSocket服务器的设计与HTTP服务器不同,它们并不是每个连接使用一个线程,因此扩展到海量并行连接本身并不成问题。

+0

在任何通信应用程序(如Whatsapp)中,可能会发生电池耗尽。电池是否耗尽大量,以至于无法使用网络套件构建聊天应用程序? – Sauron

+0

@Sauron - 我没有任何数字。很大程度上取决于您愿意接受的延迟时间。如果连接未被使用,则无线电进入节能状态,并且在接收到消息时可能需要几秒钟才能返回到快速传输状态。如果你是例如使用ping来永久保持连接快速,那么这会比使收音机节约能源消耗更多的电量。 – gzost

3

我建议只在应用程序处于前台时使用套接字连接,一旦应用程序转到后台回退到GCM以唤醒设备,然后再次建立套接字连接。这样,该应用程序不需要太多电池。另外,我怀疑iOS是否会长时间允许套接字连接。 下面是一个示例代码,用于建立聊天的同时使用套接字连接和推送通知 https://github.com/AppLozic/Applozic-Android-SDK