首页 » 软件开发 » 提供多平台SDK(消息即时通讯服务端提供项目)

提供多平台SDK(消息即时通讯服务端提供项目)

萌界大人物 2024-07-24 04:58:25 0

扫一扫用手机浏览

文章目录 [+]

Open-IM是由前微信技术专家打造的开源的即时通讯组件。
Open-IM包括IM服务端和客户端SDK,实现了高性能、轻量级、易扩展等重要特性。
开发者通过集成Open-IM组件,并私有化部署服务端,可以将即时通讯、实时网络能力快速集成到自身应用中,并确保业务数据的安全性和私密性。

Open-IM的优势开源永久免费:代码全部开源,永久免费,包括客户端和服务端,由前微信技术专家打造,并邀请全球技术极客参与建设。
易扩展:服务端采用golang实现,首创“一切皆消息”的通讯模型,轻松实现自定义消息和扩展功能。
专业技术服务:每个技术人员都承担技术客服的角色,强化社区,不提工单,及时解答。
高性能:借鉴并优化通讯架构,抽象在线消息、离线消息、历史消息存储模型,分层治理架构,支持集群部署。
安全:代码全部开源,服务端私有化部署,数据自我掌控。
未来加入全球最安全的signal端到端加密协议。
全平台支持:支持Andorid、iOS原生开发,支持Flutter、uni-app跨端开发,支持小程序、React等所有主流web前端技术框架, PC支持Electron,Flutter、iOS、uni-app已有成熟demo可以体验。
开发者可以使用Open-IM替代市场上各种IM云服务,除了降低成本,还赋予开发者更多的灵活性和自主性。
我们通过开源的方式,邀请全球技术极客来参与Open-IM建设,使每位开发者都能免费使用最优秀的IM组件,让每个app都具备即时通讯能力。

Open-IM包括哪些模块客户端

1. golang实现的跨平台的SDK

提供多平台SDK(消息即时通讯服务端提供项目) 软件开发
(图片来自网络侵删)

2. 在Open-IM-SDK-Core 基础上生成的iOS版本SDK

3. 在Open-IM-SDK-Core 基础上生成的Android版本SDK

4. 在Open-IM-SDK-iOS、Open-IM-SDK-Android生成的Flutter版本SDK

5. 在Open-IM-SDK-iOS、Open-IM-SDK-Android生成的uni-app版本SDK

6. 基于Open-IM-SDK-iOS开发的、供开发者参考的iOS Demo

7. 基于Open-IM-SDK-Android开发的Android Demo

8. 基于Open-IM-SDK-Flutter开发的Flutter Demo

9. 基于Open-IM-SDK-Uniapp开发的uni-app Demo

服务端

1. 纯golang实现的服务端

2. docker镜像:open-im-server

管理后台

包含统计报表、用户管理等运营管理系统:Open-IM-Admin

客户端界面

Open-IM主要功能多端登录

消息类型

消息功能

用户资料托管

用户关系托管

群组

数据统计

服务端架构

整体架构

服务端由接入层、逻辑层和存储层组成,好处在于各个层次能够依据业务特点专注于自己的事情,提高系统复用性,降低业务间的耦合。

接入层:消息通过 websocket 协议接入,其他通过 http/https 协议接入,消息是高频及核心功能,通过双协议路由,体现了轻重分离的设计思想。
逻辑层:通过 rpc 实现无状态逻辑服务,易于平行扩展,消息通过 MQ 解耦。
存储层:redis 存储 token 和 seq;mongodb 存储离线消息,并定时删除 14 天(可自行配置)前数据;mysql 存储全量历史消息以及用户相关资料。
数据分层存储,充分利用不同存储组件的特性。
Etcd:服务注册和发现、以及分布式配置中心。

消息架构

Open-IM 消息模型采用经典的收件箱模型,并通过全局 seq 做消息对齐,这里带来架构的简化,体现了简单美的架构设计理念。

绿色箭头表示用户 A 给 B 发送消息流程:用户 A 发送消息,msg_gateway 进行消息拆分,并落地 MQ,MQ 根据 userId 写入不同的 partition 后返回给 A 成功,消息发送流程结束。
蓝色箭头表示 A 给 B 发送消息后,服务端给 B 推送消息流程:msg_transfer 通过 MQ 消费者监听消息达到,通过 redis 增加 userId 对应的 seq,并把 seq 和消息关联后写入 mongodb,并异步写入 mysql,前者用于离线消息存储,比如用户不在线或者推送失败时同步消息使用,后者主要做历史消息备份,用于管理后台或其他用途。
写入成功后,再调用 pusher 推送,根据 B 所连接的 msg_gateway,进行消息推送(由于网络波动或者 B 不在线等原因,可能会推送失败)。
粉色箭头表示 B 主动同步和服务端差量消息流程:客户端在任何有重连动作(包括重新登录、网络波动等)发生时,首先会获取自身在服务端最大的 seq,和本地 seq 做差值对比,把差值消息通过接口主动拉取到本地,这样完成了本地和服务端消息对齐。

消息发送、消息对齐等与服务器交互的逻辑,通过 Open-IM-SDK 的方式提供给大家使用,简化了开发流程。

客户端架构

客户端架构

客户端 SDK 负责和 IM 服务端交互,本地数据存储和同步,消息、事件回调。
开发者通过集成 SDK,自行开发聊天界面 UI,设置事件监听回调实现数据和 UI 对接。

Open-IMSDK 分为三层:网络层、逻辑层、存储层。
分层治理,各司其职,实现高效、稳定、统一的客户端架构。

网络层:负责和服务端保持 websocket 连接、断网重连,接收消息推送,以确保在线时消息以及各种事件能实时达到。
负责初始登录是、重连时数据补齐,通过对比本地 seq 和服务端最大 seq,同步拉取差值消息或事件,确保客户端和服务端达到最终一致的状态。
逻辑层:针对主动调用接口和事件被动触发,对接网络层和存储层,实现业务细节,根据逻辑完成与 UI 之间的回调。
比如发送消息,SDK 为 UI 提供发送消息及回调接口,逻辑层调用存储层存储本地消息,调用网络层发送消息,成功或失败回调 UI,并触发会话改变回调。
同样接收消息或事件,网络层把消息或事件传给逻辑层,逻辑层根据消息或事件的类型做相应处理,比如存储本地消息,触发会话改变回调等。
存储层:采用 sqlite 轻量级数据库,完成本地和服务端的数据同步,包括会话、消息、事件、通讯录、群组等,对外提供的数据 get 接口,通过本地数据库获取,实现了无网络情况下能查看消息等本地数据,同时也能有效缓解服务端的压力,达到了数据同步和缓存的双重目的。

SDK 集成流程

Open-IM SDK 集成非常简单,由于开发者私有化部署,代码、配置、数据都在自家服务器上,不用向云平台申请 AppKey 和 Secret,相比第三方 IM 云服务,可见 Open-IM 更安全、可控、自由度更高。

更多内容大家可自行前往阅读。

开源地址:https://github.com/OpenIMSDK

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0