开源轻量级即时通讯技术 MobileIMSDK 的常见问题解答
| 本帖最后由 茜茜asa 于 2015-12-14 17:50 编辑
申明:MobileIMSDK 目前为个人原创开源工程且已发布,现整理了一些有关MobileIMSDK的常见的问题,希望对需要的人有用,谢谢。
MobileIMSDK开源工程的代码托管地址请进入 Git@OSC:点击进入
MobileIMSDK的Android端SDK文档:点此进入
【问题1】:MobileIMSDK到底是什么?有何价值?解决了哪些问题? ① 到底是什么?
纯技术角度讲:它是一整套基于UDP协议的客户端A、服务端、客户端B的3方全向即时通讯算法实现,超轻量级、高度提炼。 应用层角度讲:它是一组包含了Android客户端库、iOS客户端库、Java跨平台客户端库和服务端库的即时通讯SDK框架集。 更通俗一点讲:它是一个专为移动设备设计的跨设备、跨平台、跨网络的即时通讯开发框架,可用于(包含但不限于)开发聊天APP、企业OA、消息推送应用等。 ② 有何价值? ③ 解决了哪些问题?
【问题2】:类似于MobileIMSDK的框架好开发吗,有何难度? 老实讲,想要开发出稳定可靠且可用于生产环境的完整算法,并不容易(当然,这只是个人观点,如果你不这么认为,至少说明你比本文作者强多了,呵呵),比较明显的难点如下所述:
难点①:算法偶合性大、整合有难度
算法本身并无开创性,但杂合无线网络的复杂性(不同制式、易受干扰等)、跨设备、跨平台、跨网络类型的混合通信, 这些要素和条件下,要实现的算法偶合性较大,加大了整合的难度。 难点②:算法需多平台无差别精确实现、人员配备省不了 难点③:框架的提炼和把握需精准、对上层友好是关键 难点④:时间上很难一蹴而就 【问题3】:使用MobileIMSDK时如何获得帮助?
【问题4】:MobileIMSDK定义了具体的聊天APP协议吗? 没有。MobileIMSDK有明确的设计目标:即实现一个”专为移动端开发,可应用于跨设备的聊天APP、企业OA、消息推送等各种场景的高可重用即时通讯框架。“,所以为了提升MobileIMSDK的可重用性和灵活性,设计之初就特别回避了这一点。
这么设计带来的好处是,比如当MobileIMSDK应用于企业OA时,因传统企业应用系统中,通常都有自已的用户关系管理模型和实现,因而只需要将MobileIMSDK作为即时通讯消息路由子系统来使用即可,这样的场景下事情本来就该这么简单。 当然,您可以自已定义您的聊天APP协议细节,这也意味着您在开发时能拥有更高的灵活性。一个典型的基于MobileIMSDK的全功能聊天应用APP案例:点此查看和试用。 【问题5】:MobileIMSDK为何是基于UDP协议实现?有何好处? 众所周之,因为UDP协议的无连接特性,比较明显的好处有以下两点:
好处①:同等服务器软硬件条件下的更高效费比 好处②:非常适合于网络延迟较大、网络环境复杂的场景 【问题6】:MobileIMSDK支持集群吗? MobileIMSDK暂不支持集群(后绪版本有支持集群的计划)。理论上,MobileIMSDK应用于聊天APP时单机可负载的同时在线数可数十万,应用于推送场景下可达千万级别,如果您的应用能达到这样的负载极限,总用户数至少是百万甚至千万级别,相信一切技术问题都不再会是问题了。无论如何,任何同类技术的单机容量都会有颈,为了更高的负载和更好的伸缩性,大型应用里集群当然是必须的选择。MobileIMSDK的压力测试报告:点此查看。
【问题7】:MobileIMSDK支持TCP协议吗? 目前不支持。MobileIMSDK设计之初,充分考虑了移动互联网的网络复杂性和不可靠特性,最终选择以UDP协议实现之,目前还没有特别需要支持TCP协议的理由出现,当然如您有好的建议和想法,欢迎交流和讨论。
【问题8】:MobileIMSDK支持同一用户名的多设备登陆吗? 理论上MobileIMSDK的通讯不依赖于用户名(服务端会为每一个登陆的客户端分配一个唯一ID),因而同一用户名在不同客户端登陆时,通讯不受影响,但具体实现还依赖于应用层是如果处理的。
【问题9】:客户端后台有心跳机制吗?为何需要心跳机制? MobileIMSDK的客户端后台有健壮的心跳机制,使用心跳机制的主要目的有3个:
目的①:刷新NAT路由的UDP端口老化时间 目的②:告诉服务端您的客户端还“活着” 目的③:让客户端知道自已是否还处于“正常通信”状态 |
开源轻量级即时通讯技术 MobileIMSDK 的常见问题解答的更多相关文章
- 【原创】轻量级移动设备即时通讯技术MobileIMSDK的常见问题解答
申明:MobileIMSDK 目前为个人原创开源工程且已发布,现整理了一些有关MobileIMSDK的常见的问题,希望对需要的人有用,谢谢.如需与作者交流,见文章底部个人签名处,互相学习. Mobil ...
- 【原创】轻量级即时通讯技术MobileIMSDK:Android客户端开发指南
申明:MobileIMSDK 目前为个人维护的原创开源工程,现陆续整理了一些资料,希望对需要的人有用.如需与作者交流,见文章底签名处,互相学习. MobileIMSDK开源工程的代码托管地址请进入 G ...
- 【原创】轻量级移动端即时通讯技术 MobileIMSDK 发布了
申明:MobileIMSDK目前为个人原创开源工程,投入了大量的时间和精力,希望对需要的人有所帮助.如需与作者交流,见文章底部个人签名处,互相学习.Q群:215891622,欢迎共同志趣者学习和交流. ...
- Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...
- 新手入门:史上最全Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- 国内开源的即时通讯框架 (endv.cn) (前言)
如题:国内开源类似QQ的即时通讯框架(endv.cn) 出于在企业管理方面遇到的一些瓶颈问题,特别是在数据收集.统计与分析,大数据处理,时时监控跟踪,风险分析.成本控制等方面遇到的很多数据信息问题等, ...
- WebRtc(网页即时通讯技术)知识点总结
前言 WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术.并且还支持跨平台:window ...
- 新手入门贴:史上最全Web端即时通讯技术原理详解
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...
随机推荐
- VPS性能测试(1):CPU物理个数、内核、超线程、多核心
1.登录VPS界面,执行:cat /proc/cpuinfo,就会显示出VPS主机的CPU详细参数,如内核.频率.型号等等 2.主要参数physical_id表示物理CPU个数,cpu cores是内 ...
- python一步高级编程
1.==,is的使用 总结 ·is是比较两个引用是否指向了同一个对象(引用比较). ·==是比较两个对象是否相等. 2.深拷贝.浅拷贝 1.浅拷贝 浅拷贝是对于一个对象的顶层拷贝 通俗的理解是:拷贝了 ...
- JVM字节码执行引擎和动态绑定原理
1.执行引擎 所有Java虚拟机的执行引擎都是一致的: 输入的是字节码文件,处理过程就是解析过程,最后输出执行结果. 在整个过程不同的数据在不同的结构中进行处理. 2.栈帧 jvm进行方法调用和方法执 ...
- P2737 [USACO4.1]麦香牛块Beef McNuggets(完全背包+数论确定上界)
题目链接:https://www.luogu.org/problem/show?pid=2737 题目大意:农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在 ...
- MySQL查找出重复的记录
问题 查找表中多余的重复记录,重复记录是根据单个字段来判断的.例如:有张表中有uid和uname两个字段,现在需要查找出uname重复的所有数据列.数据表如下: id o_id uname 1 11 ...
- python基础(1)---python简介
一.python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.目前Python已经成为实际上除了中国最流行的开发语 ...
- 在k8s 1.7.0上启用dashboard的注意事项
因为自k8s 1.6之后,有基于角色的安全性. 所以很多网上以前的教程就不能使用了. 结合以下三个文档,暂时实现了dashboard界面的推出. http://blog.csdn.net/jinzil ...
- JDK1.8源码泛读之Arrays
jdk1.8包含的常用集合工具类,一般包括两个: 数组工具类:`java.util.Arrays ` 结合工具类:`java.util.Collections` 今天就结合源码对`java.util. ...
- Java 类、属性、方法修饰符 public、private、protected、default
Java 中修饰类修饰符:public .default (默认) Java 中修饰类中属性.方法修饰符:public.private.protected.default (默认) 通过 IDEA 创 ...
- 六十六 aiohttp
asyncio可以实现单线程并发IO操作.如果仅用在客户端,发挥的威力不大.如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多 ...