




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、环信SDK的基础架构体系zhaoliangeasemob主要内容IM SDK基本要素IM SDK 架构开发IM SDK的挑战与应对IM SDK的基本要素连接管理消息会话好友管理通知实时音视频扩展长连接与短连接SDKIM ServerHTTP Server心跳消息消息上传长连接TCP 连接及时收到服务器的推送占用服务器大量资源短连接HTTP 连接前端发起HTTP请求,通常情况下每次请求都会创建个新连接(设置keep-alive除外),每次返回数据后server就会关闭连接服务器不会特殊管理连接,减轻服务器负担心跳保活定时通知服务器连接存在服务器设定TCP keep-alive time过期没有收
2、到数据启动探针多次探测没有收到前端响应,关掉相应连接即时刷新路由器NAT( Network Address Translation)内外网IP映射表只保存最新连接老连接会被移除连接DNS配置防止DNS劫持获取DNS配置列表不同的APP会对应不同的Server IP重连重连原因主动断网,切网服务器主动断开连接(connection reset by peer)路由器外网断开永远重连New thread.start -wait(random(time) while(true and not coneccted) reconnect() wait(random(time)始终保持同一个连接实例避免自
3、踢消息消息 IDGlobal Unique ID消息类型收发方IDTo, FromBind ResourceMobilePC消息bodyIDfromtobodyBindtypefrom:uni8,to:uni3,bodies:type:txt,msg:测试,ext:支持多种聊天模型单聊群组模型聊天室模型支持多种消息类型Text,Image,VideoFile透传消息支持扩展消息消息发送与回执离线消息离线消息对方不在线,没有相应的session服务器没有收到收方的回执消息体内含离线标识获取方式服务器推大量离线导致效率低下送(push)试想如果推送2000条离线?客户端拉取(pull)根据消息ID
4、获取逐页去获取附件消息图片,语音,视频,文件,等类型的消息统一为附件消息如何发送方案一直接走长连接方案二先上传附件到服务器 获取附件UID再把载有UID的IM消息 IM Server收方读取消息,根据UID下载附件到本地大小限制附件消息会话管理消息管理消息查询,删除,插入批量消息加载批量消息导入消息发送已读标记好友管理添加好友删除好友黑名单管理群组管理添加好友通知事件通知新消息,已读,已送达通知API 回调加减联系人,群组,聊天室相关通知SDK只负责消息通知SDK不负责铃声,震动,提醒等定制化模块实时音视频支持实时音视频使用Jingle XMPP扩展协议作为控制信令使用ICE作为P2P打洞协议
5、支持媒体relay中继功能多人语音功能内部测试中支持扩展消息的扩展通过扩展属性会话的扩展通过扩展字段其他扩展,如安全性通过插件扩展总体设计模块的划分平台层会根据各平台的不同,实现不同的接口,开放符合平台层的API给第三方开发者。适配层主要要适配到ONE SDK 核心层所需要的一些接口,起到承上启下的作用。核心层主要提供IM 功能和业务逻辑,保证最大化的代码重用App vs SDK 共同点: 易用性,稳定性,可扩展等用户 vs 开发者单一平台 vs 多平台功能多vs 接口少(Rich features vs Less APIs)可裁剪性对待错误的使用: 忽略 vs 提示测试出发点: 模拟用户 v
6、s 模拟程序员? 安全性Not as general single function SDK such as voice recognition, map , etcLess APIFaade PatternPrivate class data 裁剪性用户需求不同,可以选择配置不同的功能基础功能 + 群组功能 + 实时音视频安全性插件式设计用户可以提供自己的加密方式日志日志开关日志级别日志内容测试单元测试 - Unit TestAPI TestDevelopers taskCode will be rejected without unit test集成测试 - Integration Test性能测试稳定性测试手动测试 - Manual Test功能性测试用户体验测试More?Keep It Simple, Stupid (KISS)S.O.L.I.DSingle Responsibility Principle (SRP)Open/Closed Principle (OCP)Liskov substitution principle (LSP)I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论