【原创】轻量级移动端即时通讯技术 MobileIMSDK 发布了
申明:MobileIMSDK目前为个人原创开源工程,投入了大量的时间和精力,希望对需要的人有所帮助。如需与作者交流,见文章底部个人签名处,互相学习。Q群:215891622,欢迎共同志趣者学习和交流。
【前言】
MobileIMSDK工程的前身开始于2013年10月,起初用作某产品的即时通讯底层实现,完全从零开发。
因为当时市面上类似的东西可供选择的不多,在跟某商业框架的协议谈崩了后,干脆自已开发了一套。
今年正好业余有些时间,就整理了出来,希望对需要的人有所启发和帮助。
【工程简介】
MobileIMSDK是一套专为移动端开发的原创即时通讯高可重用框架:
- 超轻量级、高度提炼,lib包50KB以内;
- 完全基于UDP协议实现;
- 客户端支持iOS、Android、标准Java平台;
- 可应用于跨设备、跨网络的聊天APP、企业OA、消息推送等各种场景。
您可能需要:查看更多关于MobileIMSDK的疑问及解答。
【代码托管同步更新】
GitHub.com
- 代码托管: https://github.com/JackJiang2011/MobileIMSDK
- 项目资料: 点击查看更多资料
OsChina.net
- 代码托管: http://git.oschina.net/jackjiang/MobileIMSDK
- 项目资料: 点击查看更多资料
【设计目标】
让开发者专注于应用逻辑的开发,底层复杂的即时通讯算法交由SDK开发人员
,从而解偶即时通讯应用开发的复杂性
。
【框架组成】
整套MobileIMSDK框架由以下4部分组成:
- Android客户端SDK:用于Android版即时通讯客户端,支持Android 2.3及以上,查看API文档;
- iOS客户端SDK:用于开发iOS版即时通讯客户端,支持iOS 6.0及以上,查看API文档;
- Java客户端SDK:用于开发跨平台的PC端即时通讯客户端,支持Java 1.5及以上,查看API文档;
- 服务端SDK:用于开发即时通讯服和端,支持Java 1.5及以上版本,查看API文档。
【技术特征】
- 超轻量级:高度提炼,lib包50KB以内;
- UDP实现:更好的适应现今的无线网络环境;
- 高效费比:UDP的无连接特性,同等条件下可实现更高的网络负载和吞吐能力;
- 消息走向:支持即时通讯技术中消息的所有可能走向,共3种(即C2C、C2S、S2C);
- QoS机制:完善的消息送达保证机制,不漏过每一条消息;
- 健壮可靠:实践表明,非常适于在高延迟、跨洲际、不同网络制式环境中稳定、可靠地运行;
- 断网恢复:拥有网络状况自动检测、断网自动治愈的能力;
- 原创算法:核心算法和实现均为原创,保证了持续改进和提升的空间;
- 多种模式:预设多种实时灵敏度模式,可根据不同场景控制即时性、流量和客户端电量消耗;
- 数据压缩:自有协议实现,未来可自主定制数据压缩,灵活控制客户端的流量、服务端网络吞吐;
- 高度封装:高度封装的API接口,保证了调用的简易性,也使得可应用于更多的应用场景。
IMMobileSDK 所支持的全部3种即时通讯消息走向分别是:
(1) Client to Client (C2C):即由某客户端主动发起,接收者是另一客户端;
(2) Client to Server (C2S):即由某客户端主动发起,接收者是服务端;
(3) Server to Client (S2C):即由服务端主动发起,接收者是某客户端。
您可能需要:查看更多关于MobileIMSDK的疑问及解答。
【性能测试】
压力测试表明,MobileIMSDK用于推送场景时,理论单机负载可接近千万级。用于聊天应用时,单机负载也可达数十万。
当然,每款应用都有各自的特点和差异,请视具体场景具体评估之,测试数据仅供参考。
性能测试报告:点此查看。
【演示程序】
- Android客户端 Demo:点此安装和使用;
- iOS客户端 Demo:点此安装和使用;
- Java客户端 Demo:点此安装和使用。
【应用案例】
① 基于MobileIMSDK的产品级聊天APP:
目前仅作演示之用:点击下载体验 或 查看运行截图。
② MobileIMSDK在高网络延迟下的案例:
某款基于MobileIMSDK的商业商品,曾运营于跨洲际的复杂网络环境下,端到端通信延迟在洲际网络繁忙时可高达600ms以上(与服务端的单向延迟约为300ms左右,而通常大家访问国内主流门户的延迟约为20~50ms),某段时期的非敏感运营数据 点此查看。
【资源下载】
最新发布版:点击下载(内含完整demo、api文档、编译分发包等
)。
【开发指南】
- Android客户端开发指南:点此查看;
- iOS客户端开发指南:点此查看;
- Java客户端开发指南:点此查看;
- Server端开发指南:点此查看。
【交流学习方式】
- 讨论学习和资料区: 点此进入;
- 移动端即时通讯学习交流群:
215891622
; - bug和建议请发送至:
jb2011@163.com
;
【关注作者】
- 推荐关注:BeautyEye工程
- 博客地址:点击入进
- Github主页:点击进入
【附录:Demo截图】
Android和iOS运行效果:
安装和使用:
进入Android版Demo帮助页、进入iOS版Demo帮助页。
Windows 运行效果:
安装和使用:
进入Java版Demo帮助页。
Mac OS X 运行效果:
安装和使用:
进入Java版Demo帮助页。
转载于:https://www.cnblogs.com/jb2011/p/5009936.html
【原创】轻量级移动端即时通讯技术 MobileIMSDK 发布了相关推荐
- 【原创】轻量级移动设备即时通讯技术MobileIMSDK的常见问题解答
申明:MobileIMSDK 目前为个人原创开源工程且已发布,现整理了一些有关MobileIMSDK的常见的问题,希望对需要的人有用,谢谢.如需与作者交流,见文章底部个人签名处,互相学习. Mobil ...
- Web端即时通讯技术原理详解
Web端即时通讯技术原理详解 前言 在web端的IM即时通讯应用,由于浏览器的兼容性以及其固有的"客户端请求服务器处理并响应"的C/S通信模型,造成了要在浏览器中实现一个兼容性较好 ...
- Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
摘要 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯 方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server- ...
- 新手入门:史上最全Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- 二维码登录原理+Web端即时通讯技术
前言 上周在写项目过程中遇到需要实现二维码的登录功能,将这个过程细节记录下来 二维码的登录过程,主要难点在于用户扫码了浏览器展示的二维码,但是浏览器本身是无法知道的,需要服务端告知信息. 涉及到 we ...
- WEB端即时通讯技术
一:传统WEB通讯的原理 浏览器本身作为一个瘦客户端,不具备直接通过系统调用来达到和处于异地的另外一个客户端浏览器通信的功能.这和我们桌面应用的工作方式是不同的,通常桌面应用通过socket可以和远程 ...
- 新手入门贴:史上最全Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- Web端即时通讯实践干货:如何让WebSocket断网重连更快速?
本文作者网易智慧企业web前端开发工程师马莹莹.为了提升内容质量,收录时有修订和改动. 1.引言 在一个完善的即时通讯IM应用中,WebSocket是极其关键的一环,它为基于Web的即时通讯应用提供了 ...
- 实现Web端即时通讯的四种方式
Web端即时通讯技术:即时通讯技术简单的说就是实现这样一种功能:服务器端可以即时地将数据的更新或变化反应到客户端,例如消息即时推送等功能都是通过这种技术实现的.但是在Web中,由于浏览器的限制,实现即 ...
最新文章
- python 获取Dmidecode 输出的系统硬件信息
- Java 8类型注释
- 制作两个字符串字谜的最小步骤数
- Cookie、cookie使用方法
- MySQL(17)--- LIKE 子句
- 手机modem开发(12)---MTK 平台如何PUSH modem 到手机中进行调试
- 在计算机系统中 外存储器必须通过,大学计算机基础第4章作业.doc
- 321. 拼接最大数
- java8中的接口与时间操作
- MATLAB获取字符串中两个特定字符之间的内容
- 频率采样型滤波器matlab,频率采样法设计带通滤波器matlab.doc
- 四个球队,单循环比赛,平局每队各得一分,胜利得3分,输不得分,最后各队得分是连续的四个自然数,求第二名的得分...
- html中自定义快捷键,电脑怎样自定义快捷键简单实现
- java .getbytes_java中String的getBytes方法使用
- 单片机定时器程序c语言,单片机定时器程序
- HTML CSS整理
- Scala—— 18.映射Map
- ao史密斯定时设置_下图ao史密斯热水器的预约定时怎么用?-史密斯热水器怎么接线...
- Qt的工程组织-.pro、.pri、.prf、.prl
- 南昌师范学院同学会05级计算机,返校感言|故事初始,是回归,回到南昌师范学院的TA们,说了这些……...
热门文章
- python idle是什么_下载下来的IDLE是个什么鬼
- java初级系统项目_JavaSE-初级阶段项目-基于excel表格的学生管理系统
- sql 列求和_图解面试题:累计求和问题如何分析?
- 数据库报错SELECT list is not in GROUP BY clause and contains nonaggregated col
- mysql 5.7 my default_Windows64位mysql5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)...
- ctc与临时限速服务器信息,基于CTC站场图图形元素设置高速铁路临时限速的方法...
- 多通路fpga 通信_基于USB通信的FPGA高速数据采集系统研究
- php完整表单实例,PHP学习(五) 完整表单实例 HTML内嵌PHP
- __call__()和call的区别_python中的__init__ 、__new__、__call__小结
- 小程序跳转样式布局错乱_小程序页面布局样式元素总结