Android-手机APP如何和服务器通讯实现聊天功能?
最近想做一个Android程序,涉及到聊天方面的内容,但是不知道具体怎么实现,像微信、米聊那样可以手机端对手机端的聊天,并且消息及时,不知道是怎么实现的,HTTP肯定不行,服务器推技术适用于PC端的B/S,但是不知道是否适合Android这样的C/S项目,不知道socket是否能实现。举一个例子wavesecure 这个网站提供远程锁定手机的功能,全天候和手机交互但是不费流量是怎么实现的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
手机移动网络不稳定, 网速慢,因此, 手机app服务器是区别于普通的互联网应用服务器的
针对移动网络的不稳定,我们需要在请求应答基础上加入超时检测、重试机制,保障数据传输的可靠
对于网速慢,我们可以采取以下几种方式:
网络长连接。大家知道,每一个数据都要建立连接来发送,是非常慢的。长连接很好的避免这一点。 当然,这种方式, CMWAP就没法使用了,话说回来, CMWAP也确实可以抛弃了。
采用socket方式来通讯,http的数据头,对于发送几个几十个字节的数据,显的太大了
数据压缩,对于超过1k的数据,就可以采用数据压缩了,压缩后,一般都只有原来数据的一半或者更小了,甚至只有元数据的20%,这对于移动网络就快很多。 当然,压缩解压会费电些,但一般不考虑
避免不断的切换服务器,采用一个服务器作为前端接入,代理各种服务器,避免切换连接的延迟
对于延时要求高的需求,比如即时对战类,采用长连接+服务器推技术, 保证在1s内,在当前的GPRS网络下, 还是有可能实现的
来源: http://hi.baidu.com/mobi_server/item/e7c88d18047ce666e65e0650
还有这一篇:手机游戏服务器端、移动对战平台开发技术要点
http://hi.baidu.com/mobi_server/item/678f473ff6809b399dc65eca
长连接,一般的Web服务器实现起来可能有困难。很久很久以前的网络通信软件都是用Socket直接实现的(TCP或者UDP)。而现在除了直接用Socket保持一个长连接以外,也有用HTTP实现的技术,不过Web服务器一般需要特别为长连接设计。优势是可以在Web页面上用javascript做即时通讯,让Web页面、手机APP、PC客户端能即时交流(像Web QQ那样)。
就手机客户端而言,Socket实现就是建立一个到tcp://somewhere:6789/(端口可以自己定)的连接,然后通过约定的协议发送和接收数据;HTTP实现是用异步HTTP方法建立一个不阻塞的访问http://somewhere/pull?para=...的过程,设置一个较长的超时,然后继续做别的;服务器在没有新消息的时候会一直保持不响应,直到有新消息或者超时,然后客户端在HTTP方法的回调函数(或者事件)里面处理结果,然后建立一个新的HTTP连接,依此循环。
长连接确实可以不过服务器的负责会很大,刚才查到有以下几种解决方案:
1)轮询(Pull)
2)SMS(Push)
3)持久连接(Push)
4) MQTT协议实现Android推送
5) RSMB实现推送
6) XMPP协议实现Android推送
后三种基本可行,但是不知道具体哪个更好一点