• TT流程随笔


    细节:

     

      如果本地可以自动登录, 先实现本地登录,发送事件通知,再请求登录服务器

     

      如果本地不可以登录(第一次或退出后),直接请求登录服务器

     

      登录服务器返回消息服务器ip port / 文件服务器

     

      链接消息服务器(socketThread 通过netty)

     

      链接成功或失败都发送事件通知 (可能是在loginactivity  处理,也可能在chatfragment处理,你懂滴)

     

     链接失败弹出界面提示

     

     链接成功 请求登录消息服务器(发送用户名 密码 etc)并且同时开启 回掉监听队列计时器(这个稍后再细看吧~)

     

     登录消息服务器成功或失败都通过回掉 (回掉函数存储在packetlistner 中)处理

     

     登录消息服务器失败 发送总线事件,也可能在两个位置处理(loginactvity/chatfragment ,你懂得~) 

     

    消息服务器登录成功,并解析返回的登录信息,发送登录成功的事件总线,事件的订阅者分为service 和 activity ,activity 中的事件负责ui的更新处理,service中事件处理,消息的进一步获取 ,与服务器打交道

     

    判断登录的类型(普通登录和本地登录成功后的消息服务器登录)

     

    service 收到登录成功(此指在线登录成功,本地登录成功也是一个道理,发送事件更新界面ui和在service中事件触发进一步的消息获取(获取本地库))的事件通知(按登录类型有所不同 ,大体一致)后,做如下工作:

     

    1.保存本次的登录标示到xml

    2.初始化数据库(创建或获取当前用户所在数据库统一操作接口单例)

    3.请求联系列表

    4.请求群组列表

    5.请求最近会话列表

    6.请求未读消息列表(只是在线登录状态)

    7.重连管理类的相关设置(广播的注册等)

     

    接下来就是对服务端发送消息过来的分析

     

    1.服务端发送消息过来有回调的采用回掉处理

     

    2.服务端没有回调的,按照commandid处理

     

    消息的处理都是在相关的管理器类实例内完成

     

    该存库的存库,该更新内存的,更新内存,然后发送事件总线更新ui  或者通知service中的相关订阅者,完成业务逻辑的数据相关处理

  • 相关阅读:
    Altium Designer下载和安装
    python中的filter()函数
    Python基础
    Linux系统中的操作命令
    Linux、Windows中的mysql数据库操作语句
    在运行Django项目时,出现127.0.0.1 拒绝了我们的连接请求
    Django的model类新增字段重新迁移时出错 django.db.utils.OperationalError: (1054, "Unknown column 'course.course_image' in 'field list'")
    使用DataGrip删除数据表
    Windows系统下安装Redis
    Python生成随机验证码需要导入ttf字体文件
  • 原文地址:https://www.cnblogs.com/qiyongqiang/p/4346105.html
Copyright © 2020-2023  润新知