这几天在看蘑菇街实时通讯程序teamtalk的安卓端代码。现在对程序的大概情况进行简单的介绍。
蘑菇街的teamtalk开源项目包含了服务器端,Android客户端和iPhone客户端的程序。想要进行研究的可以去github上面下载网址如下
https://github.com/mogujie/TeamTalk
1.主要的第三方技术
eventbus用于消息传递,eventbus的介绍和使用,详见如下博客
http://www.cnblogs.com/yuqt/p/5042985.html
greenDAO简化了SQLite操作,实现了Java object和SQLite之间的转换。参考一下论文看
http://my.oschina.net/cheneywangc/blog/196354
http://my.oschina.net/cheneywangc/blog/196360
2.使用的协议:Google ProtoBuf具体的介绍可以看下面这篇文章:
http://blog.csdn.net/eroswang/article/details/6011566
3.主要的功能分析:
登录功能
会话功能(包括个人会话,和群组会话)
通讯录功能
设置功能能
搜索功能
4.具体功能实现分析
登录功能:支持离线登录和在线登录。登录的具体流程如下:
1.连接成功后,判断是否可以直接登录。
true:1.从DB中获取历史状态,
2.建立长连接,请求最新的数据状态
3.完成。
false:1.跳转到登录页面
2.请求消息服务器地址,链接,验证,触发事件loginSuccess
3.保存登录状态
重要函数:LoginActivity.java 中 handleGotLOginIdentity(SpLoginIdentity s)和onLoginSuccess()
IMLoginManager.java 中login(SpLoginIdentity s)函数
IMSocketManager.java 中reqMsgServerAddrs()
2.会话功能
主要是最近联系人fragment页。ChatFragment.java