一种跨平台的即时通信SDK接入系统的制作方法

文档序号:13875905阅读:219来源:国知局
一种跨平台的即时通信SDK接入系统的制作方法

本发明涉及即时通信领域,具体涉及一种跨平台的即时通信sdk接入系统。



背景技术:

即时通信,指的是一种基于互联网的即时交流消息的业务,也称为“实时通信”,简称为im。允许两人或多人使用网络实时的传递文字消息,文件,语音和视频交流。

当前是一个互联网的时代,个人和企业的软件/应用基本都会用到网络。当这时候用户就会迫切想要软件/应用提供能方便,及时的交流;

而软件/应用的开发者们又头疼辛苦获取的用户,怎么能在自己的系统中保留下来,交流能让用户之间产生关系,而这种关系对用户有很大的粘性;

如果从头去开发一个及时通讯系统会投入大量的时间,财力,物力资源,而且如果设计不好还会对现有的系统造成较大的改动。

现有的做法是使用其他im系统提供的外部接口进行集成,但是由于im系统另外单独的进程,在定制性和实际使用的体验上较差。很难和原有的软件/应用结合起来。

而且现有的im系统基本都只会适用於单个或者少量系统,不能做到平台的全覆盖,即跨平台性,也让想进行im集成的开发者和用户难以选择。



技术实现要素:

本发明的目的在于,为解决上述技术问题,提供一种跨平台的即时通信sdk接入系统。

为解决上述技术问题,本发明采用如下的技术方案:一种跨平台的即时通信sdk接入系统,包括:基础技术层、核心业务层和接口层;

所述基础技术层:用于向网络io、缓存持久化及加密、线程管理和内存管理提供一致的技术点接口;

所述核心业务层:用于对即时通信系统的业务分类为多个业务模块;

所述接口层:用于将业务模型封装成统一的对外接口。

如前述的跨平台的即时通信sdk接入系统,所述基础技术层包括线程管理模块、数据库模块、内存管理模块和网络模块;

所述线程管理模块用于为所述核心业务层提供业务消息队列和线程的调度;

所述数据库模块用于对系统运行中产生的数据进行加密并且持久化;

所述内存管理模块用于管理内存;

所述内存管理模块用于将内存根据业务进行分类。

如前述的跨平台的即时通信sdk接入系统,所述内存管理模块管理内存的方法为:使用过的内存先不进行释放,保存起来,在下一次使用所述内存的时候进行复用;并且记录最后一次使用的时间,如果超过设定时间期限内没有使用,则进行释放。

如前述的跨平台的即时通信sdk接入系统,所述网络模块包括请求响应网络通道和服务器推送网络通道;请求响应网络通道用于提供终端对服务器的主动请求业务的网络支持,并使用https短链接;服务器推送网络通道用于提供主动推送业务的网络支持,该通道使用https长连接,每隔一段时间给服务器发送心跳包。

如前述的跨平台的即时通信sdk接入系统,所述将内存根据业务进行分类的方法为:对即时通信涉及到的所有业务逻辑进行编号;每一种业务都有一个唯一的标识号,所述标识号与编号相同,所述标识号为对应业务使用的内存链数组下标。

如前述的跨平台的即时通信sdk接入系统,所述业务模块包括:用户自身业务模块、联系人业务模块、群组业务模块、消息业务模块、组织机构业务模块和附件资源业务模块。

如前述的跨平台的即时通信sdk接入系统,所述接口层包括:库开发语言层和封装语言层,用于为不同的平台提供不同语言的接口。

如前述的跨平台的即时通信sdk接入系统,所述对外接口包括:创建及销毁类接口、配置类接口和请求应答类接口;

所述创建及销毁类接口,提供sdk实例的创建和销毁;

所述配置类接口,提供sdk全局或者单个实例的配置;

所述请求应答类接口,提供外部使用者对业务接口的使用及获取结果。

如前述的跨平台的即时通信sdk接入系统,所述核心业务层包括:用户自身业务模块、联系人业务模块、群组业务模块、消息业务模块、组织机构业务模块和附件资源业务模块。

与现有技术相比,本发明通过架构基础技术层、核心业务层和接口层;且所述基础技术层:用于向网络io、缓存持久化及加密、线程管理和内存管理提供一致的技术点接口;所述核心业务层:用于对即时通信系统的业务分类为多个业务模块;所述接口层:用于将业务模型封装成统一的对外接口,从而能够让软件/应用系统方便的增加即时通信功能,提高软件及应用系统的用户粘度,丰富的附件消息提高用户使用软件/应用时长。能够花费较少的时间,金钱,精力获得较大的回报。

附图说明

图1为本发明系统模块图;

图2为本发明中线程运行示意图;

图3为本发明中sqlite加密接口执行流程图;

图4为本发明中接口调用流程图;

图5为本发明中业务请求流程示意图。

下面结合附图和具体实施方式对本发明作进一步的说明。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

实施例1,如图1所示,本发明提供一种跨平台的即时通信sdk接入系统,包括:基础技术层1、核心业务层2和接口层3;

所述基础技术层1:用于向网络io、缓存持久化及加密、线程管理和内存管理提供一致的技术点接口;

所述核心业务层2:用于对即时通信系统的业务分类为多个业务模块;

所述接口层3:用于将业务模型封装成统一的对外接口。

所述基础技术层1包括线程管理模块102、数据库模块104、内存管理模块103和网络模块101;

所述线程管理模块102用于为核心业务层提供业务消息队列和线程的调度;具体调度方法如图2所示,核心业务层2所有业务模块按数据来源和业务耗时还能分类为:

1、网络相关业务,如加好友,发送聊天信息,特点是都会走网络模块且耗时在10毫秒~100毫秒量级;

2、本地缓存数据库业务,获取自己信息,获取聊天记录等,特点是会走数据库模块;

3、网络耗时业务,如传输文件等业务。

以上三种类型对于线程管理模块来说处理模式都一样,所有的核心业务层2业务处理都会使用到线程管理模块102,线程管理模块102中的消息队列中的数据来自于内存管理模块103。

线程管理模块102会在各种消息的处理中调用数据库模块104和网络模块101。

所述数据库模块104用于对系统运行中产生的数据进行加密并且持久化;优选使用aes256对数据库文件进行全文件加密,在具备高安全性的同时,具有较高的读写性能;如图3所示,加密方法可以为:

1、首先判断是否设置了加密密钥,

判断方法为,pkey长度不为零。

2、如果设置了加密密钥,则使用用户的密码计算出数据库的最终加密密钥,再计算成功后,创建一个最终加密密钥=md5(设置密钥);进一步的使用最终加密密钥加密数据库。

3、如果没有设置加密密钥,则判断当前数据库是否为主数据库(sqlite中概念),如果当前数据库是主数据库,则数据库不用加密。如果当前数据库不是主数据库,则获取主数据库的加密密钥,如果获取成功,则使用主数据库的密钥加密当前数据库。

所述内存管理模块103用于将内存根据业务进行分类。

所述内存管理模块103还用于管理内存,所述管理内存的方法为:使用过的内存先不进行释放,保存起来,在下一次使用该内存的时候进行复用;并且记录最后一次使用的时间,如果超过设定时间期限内没有使用,则进行释放。

所述网络模块101包括请求响应网络通道和服务器推送网络通道;请求响应网络通道用于提供终端对服务器的主动请求业务的网络支持,并使用https短链接;服务器推送网络通道用于提供主动推送业务的网络支持,该通道使用https长连接,每隔一段时间给服务器发送心跳包。当前大多数及时通讯工具使用http协议或tcp协议,在加密方面常使用自定义的加密方法,具有加密方法考虑不周全、存在安全漏洞等问题。网络接口不标准,第三方厂商接入困难;终端无法对服务器进行校验,会受到假冒服务器的安全威胁等缺点;所述网络模块101使用的协议为标准的https协议;在网络传输方面切合标准并且有较高的安全性,https的证书可以对服务器的身份进行校验,杜绝假冒服务器带来的数据泄露风险。

所述将内存根据业务进行分类的方法为:对即时通信涉及到的所有业务逻辑进行编号;每一种业务都有一个唯一的标识号,所述标识号与编号相同,所述标识号为对应业务使用的内存链数组下标。

所述业务模块包括:用户自身业务模块201、联系人业务模块202、群组业务模块、消息业务模块、组织机构业务模块和附件资源业务模块。

所述接口层3包括:库开发语言层和封装语言层,用于为不同的平台提供不同语言的接口;

所述对外接口包括:创建/销毁类接口、配置类接口和请求应答类接口。

所述创建及销毁类接口,提供sdk实例的创建和销毁;

所述配置类接口,提供sdk全局或者单个实例的配置;

所述请求应答类接口,提供外部使用者对业务接口的使用及获取结果,使用请求应答类接口发送一个请求,到获得请求结果流程如图5所示:

1、请求应答类接收在收到一个请求后,判断该请求是否是网络即时消息请求,如果是,则处理该网络即时消息,请求处理完毕后,将结果放入响应回掉队列,回掉处理方法会自动调用;

2、若该请求不是网络即时消息请求,则判断该请求时否是本地缓存数据请求,如果是,则在本地数据库进行请求处理,并响应队列回调;

3、若该请求不是本地缓存数据请求,则在附件资源业务模块206中进行资源请求,耗时资源io请求处理,所述耗时资源指即时通信中一些消息的附件,比如语音,文件,图片等数据,这类数据都比文本信息大很多,网络传输中需要耗费较多时间,并响应队列回调。

如图4所示,所述接口调用具体方法为:通过所述配置类接口初始化sdk,并获取/设置sdk本地配置;然后通过请求应答类接口发送业务请求并接收推送,并循环进行;最后反初始化sdk。

所述核心业务层2包括:用户自身业务模块201、联系人业务模块202、群组业务模块203、消息业务模块204、组织机构业务模块205和附件资源业务模块206。

实施例2,如图1所示:一种跨平台的即时通信sdk接入系统,包括:基础技术层1、核心业务层2和接口层3;

所述基础技术层1:用于向网络io、缓存持久化及加密、线程管理和内存管理提供一致的技术点接口;所述基础技术层1包括线程管理模块102、数据库模块104、内存管理模块103和网络模块101;

所述线程管理模块102用于对所述数据库模块104、内存管理模块103、网络模块101、请求处理模块和响应模块中的线程之间数据、消息队列和线程池的调度;

所述数据库模块104用于对系统运行中产生的数据进行加密并且持久化;

所述内存管理模块103用于将内存根据业务进行分类;

所述核心业务层2:用于对即时通信系统的业务分类为多个业务模块;

所述接口层3:用于将业务模型封装成统一的对外接口。

实施例3,如图1所示:一种跨平台的即时通信sdk接入系统,包括:基础技术层1、核心业务层2和接口层3;

所述基础技术层1:用于向网络io、缓存持久化及加密、线程管理和内存管理提供一致的技术点接口;所述基础技术层1包括线程管理模块102、数据库模块104、内存管理模块103和网络模块101;

所述线程管理模块102用于对所述数据库模块104、内存管理模块103、网络模块101、请求处理模块和响应模块中的线程之间数据、消息队列和线程池的调度;

所述数据库模块104用于对系统运行中产生的数据进行加密并且持久化;

所述内存管理模块103用于将内存根据业务进行分类;所述内存管理模块103还用于管理内存,所述管理内存的方法为:使用过的内存先不进行释放,保存起来,在下一次使用所述内存的时候进行复用;并且记录最后一次使用的时间,如果超过设定时间期限内没有使用,则进行释放;

所述核心业务层2:用于对即时通信系统的业务分类为多个业务模块;

所述接口层3:用于将业务模型封装成统一的对外接口。

实施例4,如图1所示:一种跨平台的即时通信sdk接入系统,包括:基础技术层1、核心业务层2和接口层3;

所述核心业务层2:用于对即时通信系统的业务分类为多个业务模块;

所述接口层3:用于将业务模型封装成统一的对外接口;

所述基础技术层1:用于向网络io、缓存持久化及加密、线程管理和内存管理提供一致的技术点接口;所述基础技术层1包括线程管理模块102、数据库模块104、内存管理模块103和网络模块101;

所述线程管理模块102用于对所述数据库模块104、内存管理模块103、网络模块101、请求处理模块和响应模块中的线程之间数据、消息队列和线程池的调度;

所述数据库模块104用于对系统运行中产生的数据进行加密并且持久化;

所述内存管理模块103用于将内存根据业务进行分类;所述核心业务层2:用于对即时通信系统的业务分类为多个业务模块;

所述网络模块101包括请求响应网络通道和服务器推送网络通道;请求响应网络通道用于提供终端对服务器的主动请求业务的网络支持,并使用https短链接;服务器推送网络通道用于提供主动推送业务的网络支持,该通道使用https长连接,每隔一段时间给服务器发送心跳包。

实施例5,如图1所示:一种跨平台的即时通信sdk接入系统,包括:基础技术层1、核心业务层2和接口层3;

所述基础技术层1:用于向网络io、缓存持久化及加密、线程管理和内存管理提供一致的技术点接口;所述基础技术层1包括线程管理模块102、数据库模块104、内存管理模块103和网络模块101;

所述线程管理模块102用于对所述数据库模块104、内存管理模块103、网络模块101、请求处理模块和响应模块中的线程之间数据、消息队列和线程池的调度;

所述数据库模块104用于对系统运行中产生的数据进行加密并且持久化;

所述内存管理模块103用于将内存根据业务进行分类;

所述核心业务层2:用于对即时通信系统的业务分类为多个业务模块;

所述接口层3:用于将业务模型封装成统一的对外接口;所述对外接口包括:创建及销毁类接口、配置类接口和请求应答类接口;所述创建及销毁类接口,提供sdk实例的创建和销毁;所述配置类接口,提供sdk全局或者单个实例的配置;所述请求应答类接口,提供外部使用者对业务接口的使用及获取结果。

本发明一种实施例的工作原理:使用基础技术层1中的线程管理模块102启动1个请求处理线程,主要处理来自外部的请求数据,但是自身并不处理数据,根据预先分配的请求类型,将数据投递到响应类型的处理线程;

使用线程管理模块102启动1个网络io线程,主要处理需要和服务器进行及时消息通讯的数据;

使用线程管理模块102启动1个数据库读写线程,主要处理和数据库有关的请求数据;

使用线程管理模块102启动5个资源处理线程,主要处理网络和本地的附件资源上传下载的请求数据;

使用线程管理模块102启动1个响应线程,主要将请求执行完毕获得的响应数据回掉到请求的回掉方法中;

以上线程启动后默认情况下为挂起状态,节省系统资源;

将核心业务层2分类出来的sdk主动推送类业务注册回调方法到网络模块101,所述核心业务层2的每个模块中都有所述主动推送类业务,主动推送类业务指的是:上层应用不用向sdk发送请求,sdk会主动推送消息到上层应用,比如好友的状态改变,不同用户之间发送一条即时信息;这都是在上层应用没有发送请求的时候,需要sdk主动通知上层应用的业务,sdk和上层应用是被动地被接收到的网络信息所驱动的。所述业务注册回调方法需要在请求之前注册到sdk。如果网络有推送消息,sdk会主动推送数据到上层。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1