前一段时间利用业余时间开发了一款android app,主要功能是团队实时定位,应用的难点在于实时性。第一,当终端位置改变时要实时上传到服务器,第二,终端要取得服务器上团队其他成员的实时位置,我开了两个线层分别处理这两个功能,线层内部用轮询的方式,即每隔一段时间(我设置的2s)用http协议去请求一次服务器取得数据,单机测试时发现并不稳定,当无线网络信号不好时会造成阻塞,如果加上差错控制就失去了实时性,初步解析是轮询时间过于频繁,这样做的坏处就是耗流量,而且如果并发数量太大服务器会压力山大,如果对代码做一些优化情况会缓解一些,但这似乎并不是良好的解决方案。
今天查资料了解了一下android系统的推送机制及众多IM软件的通信原理,得出的结论就是用xmpp协议去和服务器保持连接,当然,服务器需要安装openfire,对于像我这样没钱打酱油的暂时只能够租个jsp空间而已- -!
至此,用轮询方式实现的app先封一个版本,供大家小范围测试试用,下一步的计划是在局域网搭建一个openfire服务器,同时手机端代码大整改,试试openfire+xmpp的威力!
哦对了,欢迎访问www.livingpoints.cn下载app(香港空间,初次打开速度可能慢点,但不要担心打不开)。