🚀 OpenIM: 用于构建应用内聊天开源SDK
不同于 WeChat、Slack等独立聊天应用,OpenIM为开发者提供了一套开源即时通讯SDK。 开发者能够轻松地在自己的应用程序中集成即时通讯功能,从而避免了从零开始构建复杂的聊天系统。 此外,OpenIM 也可作为 Twilio、Sendbird 等即时通讯云服务的开源替代品。 需要注意的是,开发者需要开发客户端UI,而OpenIM的DEMO仅作为参考。
OpenIM 是由两大核心组件构成的即时通讯解决方案:OpenIM SDK 和 OpenIM Server。以下是其主要特征:
📦 OpenIM SDK:
- 作为库文件形式,直接嵌入到应用程序中,便于开发者快速集成。
🖥️ OpenIM Server:
- 作为独立的服务端程序私有化部署,提供强大的消息管理、分发、推送能力。
📘 详解OpenIM SDK
OpenIM SDK 是为 OpenIM Server 设计的IM SDK,嵌入客户端应用中。其主要功能和技术特点如下:
🌟 主要功能:
- 📦 本地存储
- 🔔 监听器回调
- 🛡️ API封装
- 🌐 连接管理
📚 主要模块:
- 🚀 初始化及登录
- 👤 用户管理
- 👫 好友管理
- 🤖 群组功能
- 💬 会话处理
🔧 技术实现方面:
- 🏗️ 使用Golang编写
- 🌉 利用Gomobile进行跨平台编译
- 🕸️ wasm技术实现web端SDK
- 🌌 通过cgo实现c接口导出
- 🌍 覆盖几乎所有平台和语言
🛠️ SDK-DEMO
平台/语言 | SDK资源链接 | SDK描述 | 带UI的demo | 描述 |
---|---|---|---|---|
Golang | open-im-sdk-core | Golang SDK | ||
iOS | open-im-sdk-ios | iOS SDK | open-im-ios-demo | iOS示例 |
Android | open-im-sdk-android | Android SDK | open-im-android-demo | Android示例 |
Flutter | open-im-sdk-flutter | Flutter SDK | open-im-flutter-demo | Flutter示例 |
uni-app | open-im-sdk-uniapp | uni-app SDK | open-im-uniapp-demo | uni-app示例 |
JS SDK | @openim/client-sdk | JSSDK(不带存储,兼容uniapp/小程序) | - | - |
JS SDK(wasm) | @openim/wasm-client-sdk | JSSDK(wasm版本/带存储) | open-im-pc-web-demo | PC web示例 |
React Native | open-im-sdk-reactnative | React Native SDK | open-im-reactnative-demo | React Native示例 |
electron FFI | @openim/electron-client-sdk | electron FFI SDK | open-im-electron-ffi | electron FFI 示例 |
.NET | open-im-sdk-dotnet | .NET SDK | open-im-dotnet-demo | .NET 示例 |
Unity | open-im-sdk-unity | Unity SDK | open-im-unity-demo | Unity示例 |
C/C++ | open-im-sdk-cpp | C/C++ SDK |
🔍 详解OpenIM Server
OpenIM Server 具有以下特点:
- 🧩 多模块构成,如网关(gateway)和多个rpc服务。
- 🌐 微服务架构,支持集群模式。
- 🚀 部署方式多样,如源代码、kubernetes或docker部署。
🌐 REST API
- OpenIM Server 提供了REST API供业务系统使用,例如通过建立群组、发送推送消息等。REST API以APP管理员身份调用,旨在赋予业务更多功能。
📞 Webhook
- OpenIM Server提供了回调能力以扩展更多的业务形态,所谓回调,即OpenIM Server会在某一事件发生之前或者之后,向指定的服务器发送请求,如发送消息之前或之后的回调。