跳到主要内容

🚀 OpenIM: 用于构建应用内聊天开源SDK

不同于 WeChat、Slack等独立聊天应用,OpenIM为开发者提供了一套开源即时通讯SDK。 开发者能够轻松地在自己的应用程序中集成即时通讯功能,从而避免了从零开始构建复杂的聊天系统。 此外,OpenIM 也可作为 Twilio、Sendbird 等即时通讯云服务的开源替代品。 需要注意的是,开发者需要开发客户端UI,而OpenIM的DEMO仅作为参考。

OpenIM 是由两大核心组件构成的即时通讯解决方案:OpenIM SDKOpenIM Server。以下是其主要特征:

📦 OpenIM SDK:

  • 作为库文件形式,直接嵌入到应用程序中,便于开发者快速集成。

🖥️ OpenIM Server:

  • 作为独立的服务端程序私有化部署,提供强大的消息管理、分发、推送能力。

关系示意图

📘 详解OpenIM SDK

OpenIM SDK 是为 OpenIM Server 设计的IM SDK,嵌入客户端应用中。其主要功能和技术特点如下:

🌟 主要功能:

  • 📦 本地存储
  • 🔔 监听器回调
  • 🛡️ API封装
  • 🌐 连接管理

📚 主要模块:

  1. 🚀 初始化及登录
  2. 👤 用户管理
  3. 👫 好友管理
  4. 🤖 群组功能
  5. 💬 会话处理

🔧 技术实现方面:

  • 🏗️ 使用Golang编写
  • 🌉 利用Gomobile进行跨平台编译
  • 🕸️ wasm技术实现web端SDK
  • 🌌 通过cgo实现c接口导出
  • 🌍 覆盖几乎所有平台和语言

🛠️ SDK-DEMO

平台/语言SDK资源链接SDK描述带UI的demo描述
Golangopen-im-sdk-coreGolang SDK
iOSopen-im-sdk-iosiOS SDKopen-im-ios-demoiOS示例
Androidopen-im-sdk-androidAndroid SDKopen-im-android-demoAndroid示例
Flutteropen-im-sdk-flutterFlutter SDKopen-im-flutter-demoFlutter示例
uni-appopen-im-sdk-uniappuni-app SDKopen-im-uniapp-demouni-app示例
JS SDK@openim/client-sdkJSSDK(不带存储,兼容uniapp/小程序)--
JS SDK(wasm)@openim/wasm-client-sdkJSSDK(wasm版本/带存储)open-im-pc-web-demoPC web示例
React Nativeopen-im-sdk-reactnativeReact Native SDKopen-im-reactnative-demoReact Native示例
electron FFI@openim/electron-client-sdkelectron FFI SDKopen-im-electron-ffielectron FFI 示例
.NETopen-im-sdk-dotnet.NET SDKopen-im-dotnet-demo.NET 示例
Unityopen-im-sdk-unityUnity SDKopen-im-unity-demoUnity示例
C/C++open-im-sdk-cppC/C++ SDK

🔍 详解OpenIM Server

OpenIM Server 具有以下特点:

  • 🧩 多模块构成,如网关(gateway)和多个rpc服务。
  • 🌐 微服务架构,支持集群模式。
  • 🚀 部署方式多样,如源代码、kubernetes或docker部署。

🔗 OpenIM Server 仓库地址

🌐 REST API

  • OpenIM Server 提供了REST API供业务系统使用,例如通过建立群组、发送推送消息等。REST API以APP管理员身份调用,旨在赋予业务更多功能。

📞 Webhook

  • OpenIM Server提供了回调能力以扩展更多的业务形态,所谓回调,即OpenIM Server会在某一事件发生之前或者之后,向指定的服务器发送请求,如发送消息之前或之后的回调。