即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务。
吴秋语(Rachael):某互联网公司后台开发工程师,主要从事服务端开发、需求分析、系统设计、优化重构工作,主要开发语言Golang。
IM开发的3种实现方式分别为:
1)开源代码;
2)自研;
3)集成商业SDK。
1)客户端开发:包括各平台的手机app、桌面软件,网页端,小程序端等;
2)服务端开发:负责IM各种功能的实现,比如用户接入、关系链维护、收发消息、文件图片存储、安全审核等;
3)服务运维:一个长期运营的产品,必定需要一个持续性的运维过程,以保证IM服务端稳定可靠,比如业务量上涨的扩容处理。
项目地址:https://github.com/JackJiang2011/MobileIMSDK
MobileIMSDK 是一个原创移动端IM通信层框架,轻量级、高度提炼,历经8年、久经考验。是市面上唯一同时支持UDP+TCP+WebSocket三种协议的同类开源框架,支持iOS、Android、Java、H5,服务端基于Netty。
PS:需要注意的是该项目的H5端暂未开源,小程序与Uniapp也还在开发之中。
项目地址:https://github.com/OpenIMSDK/Open-IM-Server
OpenIM的创始团队来自IM高级架构师 ,由IM/WebRTC专家团队开发,致力于用开源技术创造服务价值,打造轻量级、高可用的IM架构,方便开发者构建多种即时通讯及实时音视频互动场景。
1)消息的可靠性、有序性;
2)高并发场景下的消息实时推送,以及消息拉取;
3)消息存储方案选型:使用读扩散还是写扩散;
4)消息未读数的准确计算;
5)群回执消息;
6)异地多活。
集成商业sdk具有以下优势:
1)快速落地IM产品,快速上线,抢占市场;
2)服务稳定,避免烦杂的运维工作;

3)功能可扩展:增加新功能时,可以主动向sdk厂商提需求实现;
4)相比自研,大幅降低成本。
选择集成商业sdk时,产品落地流程如下:
1)申请sdk厂商服务账号,获取账号秘钥,用于用户登录。
2)开发业务服务后台,用于计算登录鉴权信息。
3)集成厂商sdk,开发应用程序(比如iOS应用、Android应用、小程序等)。
以收发消息为例,各模块之间的交互流程如下:
由此可见,集成商业sdk的方案,只需要开发一个简单的业务后台,然后集成sdk,开发自己的应用程序,即可快速上线服务。
应项目需求笔者选用ZIM实现单聊场景消息收发,仅有简单2步整个过程半天搞定。以下以本人的经验分享如何快速实现单聊场景消息收发。集成sdk过程感兴趣的小伙伴到即构官网查看,在此不赘述。
IM 的使用场景中比较常见的是点对点消息,这里我们以安卓端收发文本消息为例。
1)初始化 IM SDK:
获得一个 ZIM 实例:
2)登录ZIM:
类比微信账号登录的操作,用来作为收发消息的载体:
对应 UI 示例:
3)发送端调用发送单聊文本消息:
登录后便可调用该接口,在 message 填上想要发送的消息,在 toUserID 填上接收端的 userID,想要发送时调用即可。
接口展示:
对应 UI 示例:
(2) 在注册事件回调的接收对象中重写接收单聊消息的方法
对应 UI 示例:
UI 示例,以发送图片为例,从相册读取图片并压缩保存到 APP目录下,将本地图片的 path 传入 ZIMImageMessage, 并调用 sendMediaMessage,UI 上做对应展示即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/164377.html