最近做android开发,需要用户能够在android终端反馈相应信息给后台客服,后台使用PC界面。主要的功能如下:
1、在联网能够相互通信的情况下,终端将信息上传到服务器
2、在联网互相通信的下,服务器端客服如果回复了信息,需要及时通知给终端用户
3、统计终端用户的在线时间
对于第二点,我最开始一直想着是推送服务予以实现,但是思索一段时间后发现,可以往简单的方面讲,而且我需要实现第三点。我完全可以使用socket通信来予以实现,通过定时轮询。总的方案如下:
服务器端采用socket连接池,客户端与服务器端进行socket连接通信,第一次通信时,客户端将设备ID上传到服务器端,作为唯一性标识,客户端每五分钟发送一次查询请求,服务器端用ID不断的查询数据库是否有先的恢复信息,有的话则返回客户端。客户端的sockt线程是在service内予以启动的,不依赖于任何一个Activity。service服务推出的时候,客户端向服务器发送通信截止信号,服务器端将连接释放。
如何客户端查询所有交互信息列表,信息量打的话通信容易出错。通过思考,我认为可以使用android设备都内置了的SQLite数据库,即客户端信息在上传到服务器端的同时写入本机SQLite数据库,而当服务器端有反馈信息的时候,将从服务器端得到的回复信息写入手机数据库。每次读取信息列表的时候读本地数据库,如果服务器端有新回复,则给予用户提醒,更新数据到本地。在不能联网或者不能与服务器通信的时候,只能读取本地数据。这样可以降低通信数据传输。