最近在看由蘑菇街开源的企业通讯软件(基于netty 3.x),自己写个笔记。
在使用eventBUS使得代码做了很好的解耦,但是可读性差了很多。
整体介绍:
1、IMService IMService 负责所有IMManager的初始化与reset 并且Manager的状态的改变 也会影响到IMService的操作
2、在IMService中 几个主要的管理对象如下:
IMLoginManager 登陆
IMContactManager 登陆、网络连接成功等处理
IMSocketManager Socket通讯 业务层的管理
IMHeartBeatManager 心跳包管理
IMMessageManager 消息管理
SocketThread Socket通讯的管理 初始化netty框架
ListenerQueue 消息监听队列 (消息异步收发 超时等处理)
登陆过程 :部分 event事件未处理 如: triggerEvent(SocketEvent.REQ_MSG_SERVER_ADDRS_SUCCESS);
1.客户端通过域名获得login_server的地址
2.客户端通过login_server获得msg_serv的地址
3.客户端带着用户名密码对msg_serv进行登录
4.msg_serv转给db_proxy进行认证(do not care on client)
5.将认证结果返回给客户端
消息文本发送过程:IMMessageManager 中sendMessage (消息的msgID为0 状态为发送中)更新sql ->异步处理(监听接口中更新后台返回msgID 更新sql 再一次更新UI)同时更新UI
关于netty解码器 LengthFieldBasedFrameDecoder类 参考http://blog.csdn.net/zzycgfans/article/details/6732752
更多netty http://cache.baiducontent.com/c?m=9d78d513d99f16e91ea680394d48d83c5f12c2743da4cd082383d50ed8735b361c3bfe&p=aa6ac64ad49e11a05bee9f241c4092&newp=9033c816d9c117ff57ee977544548a231601d13523808c0a3b8fd125906f5c17&user=baidu&fm=sc&query=netty&qid=b672dde4000030dc&p1=2