# 一、业务、功能描述

IM-WEB-SDK提供web端技术通讯功能。
包含信息接收发送、信息(好友、群、会话、公众号、群、消息、帮助、个人信息)持久化信息、离线拉取信息、推送信息。
基于访问thrift(接口)，完成数据交互。

# 二、文件接口说明
docs
    md  对外提供接口文字类api描述
    thrift  thrift对外提供api信息，供IM-WEB_SDK业务参考

src(核心功能业务处)
    catch   持久化实现(相当于java的dao|mapper),使用dexie实现(基于indexDB，偏向noSql写法)
        base    持久化对应实体模型, PS：此处只是方便开发人员查询表内存储哪些数据，并未真正使用！！！
        config  基本配置信息
        constant    常量类
        core    核心对外提供具体API包
            action  对外提供具体API文件(相当于java的controller)
        decorator   装饰器，这里ErrorORCompletionDecorator充当同一拦截器(因try/catch特性，无法层层捕捉错误信息)，此处可以拦截所有基层类异常信息，同一处理，提供给调用者(相当于java的filter)
        error   定义基础异常类
        model   数据缓存(内存或localStorage)处
        notify  信息推送定义与实现
        offline 离线信息拉取
        service 业务处理
        thrift  
            client  基于thrift编译后提取处理文件
            lib 原始thrift编译后文件
            merge   原始thrift编译后文件，使用gulp合并后文件
        utils   工具类    
        
         
# 三、设计思想
1：thrift处理：拿到c++提供thrift文件编译成对应js文件，使用gulp合并代码，改为支持CommonJS支持方法;
   编写client(ThriftBase/ThriftHoldClient/ThriftNotifyClient/ThriftServiceClient)与notify 处理thrift发送与推送接受(长链接等待)

2: 整体设计思想：仿照服务端 3层架构思想(controller->service->dao)对应本项目为action->service->cache;
   消息推送先拆解原始返回信息，实现解耦，再使用emit将thrift推送信息处理后推送调用方
   登录成功后调用offline拉取离线信息
   ErrorORCompletionDecorator与JSDKError 统一拦截处理错误信息并返还至调用方