环信SDK的基础架构体系1教程教案.pptx

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
环信SDK的基础架构体系zhaoliang@主要内容IM SDK基本要素IM SDK 架构开发IM SDK的挑战与应对IM SDK的基本要素连接管理消息会话好友管理通知实时音视频扩展长连接TCP 连接及时收到服务器的推送占用服务器大量资源短连接HTTP 连接前端发起HTTP请求,通常情况下每次请求都会创建个新连接(设置keep-alive除外),每次返回数据后server就会关闭连接服务器不会特殊管理连接,减轻服务器负担心跳保活定时通知服务器连接存在服务器设定TCP keep-alive time过期没有收到数据启动探针多次探测没有收到前端响应,关掉相应连接即时刷新路由器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))}始终保持同一个连接实例避免自踢消息IDtypetofromBindbody消息 IDGlobal Unique ID消息类型收发方IDTo, FromBind ResourceMobilePC消息body<message id=“0123456789”To=uni3From=un8/mobiletype="chat"><body>{"from":"uni8","to":"uni3","bodies":[{"type":"txt","msg":"测试"}],"ext":{}}</body></message>支持多种聊天模型单聊群组模型聊天室模型支持多种消息类型Text,Image,VideoFile透传消息支持扩展消息消息发送与回执离线消息离线消息对方不在线,没有相应的session服务器没有收到收方的回执消息体内含离线标识获取方式服务器推大量离线导致效率低下送(push)试想如果推送2000条离线?客户端拉取(pull)根据消息ID获取逐页去获取附件消息图片,语音,视频,文件,等类型的消息统一为附件消息如何发送方案一直接走长连接方案二先上传附件到服务器? 获取附件UID再把载有UID的IM消息? IM Server收方读取消息,根据UID下载附件到本地大小限制附件消息会话管理消息管理消息查询,删除,插入批量消息加载批量消息导入消息发送已读标记好友管理添加好友删除好友黑名单管理群组管理添加好友通知事件通知新消息,已读,已送达通知API 回调加减联系人,群组,聊天室相关通知SDK只负责消息通知SDK不负责铃声,震动,提醒等定制化模块实时音视频支持实时音视频使用Jingle XMPP扩展协议作为控制信令使用ICE作为P2P打洞协议支持媒体relay中继功能多人语音功能内部测试中支持扩展消息的扩展通过扩展属性会话的扩展通过扩展字段其他扩展,如安全性通过插件扩展总体设计模块的划分平台层会根据各平台的不同,实现不同的接口,开放符合平台层的API给第三方开发者。适配层主要要适配到ONE SDK 核心层所需要的一些接口,起到承上启下的作用。核心层主要提供IM 功能和业务逻辑,保证最大化的代码重用App vs SDK 共同点: 易用性,稳定性,可扩展等用户 vs 开发者单一平台 vs 多平台功能多vs 接口少(Rich features vs Less APIs)可裁剪性对待错误的使用: 忽略 vs 提示测试出发点: 模拟用户 vs 模拟程序员? 安全性Not as general single function SDK such as voice recognition, map , etcLess APIFa?ade PatternPrivate class data 裁剪性用户需求不同,可以选择配置不同的功能基础功能 + 群组功能 + 实时音视频安全性插件式设计用户可以提供自己的加密方式日志日志开关日志级别日志内容测试单元测试 - Unit TestAPI TestDeveloper’s 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/

文档评论(0)

186****7785 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档