写点什么

开源 IM 项目 OpenIM 发布消息推送 api,支持应用与 IM 互通深度融合

作者:Geek_1ef48b
  • 2022 年 4 月 03 日
  • 本文字数:2445 字

    阅读完需:约 8 分钟

以办公场景为例,比如员工入职通知,放假通知等业务通知,由 oa 系统处理具体的业务逻辑,再调用消息推送 api,触达到目标用户。


效果示例

以协同办公为例,员工收到系统推送的工作通知,有新任务需要处理。



员工点击工作通知,可以查看具体详情,每条通知有不同的发送者昵称和头像。这种通知类型是一种新的会话类型,全部聚合在同一个会话。



OpenIM 简介

OpenIM:从服务端到客户端 SDK 开源即时通讯整体解决方案。开发者可以轻松替代第三方 IM 云服务,打造具备聊天、社交功能的 app,也可以在自身应用中集成 SDK,以提供即时通讯能力。开源 IM 的价值在于“一切皆可控”“我的信息我做主”,无论是技术,还是信息安全。

整体超过 7.2K star,OpenIM 作为开源 IM 的领跑者,持续添加新功能,包括消息推送 api,群聊已读。服务端和 sdk 都是 Apache-2.0 License 授权协议,可以免费使用。带有 UI 的产品需要商业授权,有兴趣的客户可以联系我们深度交流。

web 端体验:https://open-im-online.rentsoft.cn/

安卓端体验:https://www.pgyer.com/OpenIM

iOS 端体验:

https://testflight.apple.com/join/o956rTGx



单机性能及容量总结

服务器资源:8 核 16G 内存, 6 个机械磁盘,每个磁盘 100G, mongo 分片,10MB 带宽。

容量:用户同时在线 10 万以上,消息条数 10 亿。

性能评估:同时在线用户 10 万,每秒钟发送消息 900 条,(从发送者发出消息到接收到消息)消息延时 1 秒

可靠性总结

每条消息都能被对方精确收到,并成功落地 app 本地 db。对于失败的 3 条消息,接收方确实没有收到,确保系统消息一致性。

系统具备优秀的平行扩展能力,除存储模块外,其他模块都无状态,支持亿级用户,千亿消息量。

github 地址:https://github.com/OpenIMSDK/Open-IM-Server

开发者中心:https://doc.rentsoft.cn/#/

简要描述

  • 管理员通过后台接口发送通知类型消息

请求 URL

  • http://x.x.x.x:10000/manager/send_msg

请求方式

  • POST

请求示例

  {   "operationID": "Oa notification operationID111",    "sendID": "openIM123456",    "recvID": "18712345678",    "senderPlatformID": 2,    "senderFaceURL": "http://www.head.com",    "senderNickname": "系统通知2",    "content": {       "notificationName": "公文管理",        "notificationFaceURL": "http://www.head1.com",        "notificationType": 1,        "text": "大家好,今天是...",        "externalUrl":"",       "mixType": 0,        "pictureElem": {           "sourcePath": "",            "sourcePicture": {               "uuid": "",                "type": "",                "size": 0,                "width": 0,                "height": 0,                "url": ""          },            "bigPicture": {               "uuid": "",                "type": "",                "size": 0,                "width": 0,                "height": 0,                "url": ""          },            "snapshotPicture": {               "uuid": "",                "type": "",                "size": 0,                "width": 0,                "height": 0,                "url": ""          }      },        "soundElem": {           "uuid": "",            "soundPath": "",            "sourceUrl": "",            "dataSize": 0,            "duration": 0      },        "videoElem": {           "videoPath": "",            "videoUUID": "",            "videoUrl": "",            "videoType": "",            "videoSize": 0,            "duration": 0,            "snapshotPath": "",            "snapshotUUID": "",            "snapshotSize": 0,            "snapshotUrl": "",            "snapshotWidth": 0,            "snapshotHeight": 0      },        "fileElem": {           "filePath": "",            "uuid": "",            "sourceUrl": "",            "fileName": "",            "fileSize": 0      },        "ex": ""  },    "contentType": 1400,    "sessionType": 4,    "isOnlineOnly": false,    "offlinePushInfo": {       "title": "admin revoke your message",        "desc": "",        "ex": "",        "iOSPushSound": "default",        "iOSBadgeCount": false  }}Copy to clipboardErrorCopied
复制代码

请求参数

返回示例

{ "errCode": 0,  "errMsg": "",  "data": {     "serverMsgID": "",      "clientMsgID": "",      "sendTime": 1645697804432}}Copy to clipboardErrorCopied
复制代码

返回参数

消息类型格式描述

简要描述

  • 管理员消息发送字段中 contentType 支持的消息类型说明以及消息 content 的具体字段说明。

ContentType 消息类型说明

Content 具体内容

  • content 内部为具体的 json 对象,不同的消息类型是不同的 json 对象

文本消息

{ ..., "content": {     "text": "nihao"}, ....}Copy to clipboardErrorCopied
复制代码


自定义消息

{ ..., "content": {     "data": "",      "description": "",      "extension": ""}, ....}Copy to clipboardErrorCopied
复制代码



用户头像

Geek_1ef48b

关注

还未添加个人签名 2021.08.25 加入

还未添加个人简介

评论

发布
暂无评论
开源IM项目OpenIM发布消息推送api,支持应用与IM互通深度融合_Geek_1ef48b_InfoQ写作平台