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

40次阅读

共计 4314 个字符,预计需要花费 11 分钟才能阅读完成。

以办公场景为例,比方员工入职告诉,放假告诉等业务告诉,由 oa 零碎解决具体的业务逻辑,再调用音讯推送 api,触达到目标用户。

成果示例

以协同办公为例,员工收到零碎推送的工作告诉,有新工作须要解决。

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

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

整体超过 7.2K star,OpenIM 作为开源 IM 的领跑者,继续增加新性能,包含音讯推送 api,群聊已读。服务端和 sdk 都是 Apache-2.0 License 受权协定,能够收费应用。带有 UI 的产品须要商业受权,有趣味的客户能够分割咱们深度交换。

5X8 小时 vip 专属服务,包含:
(1)一对一技术咨询,微信 电话等各种形式;
(2)sdk 应用辅导征询;
(3)服务端架构及部署答疑;
(4)IM 新需要优先排期;
(5)bug 优先修复;
(6)系统维护和故障响应;
web 端体验:https://open-im-online.rentso…

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

iOS 端体验:

https://testflight.apple.com/…


单机性能及容量总结

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

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

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

可靠性总结

每条音讯都能被对方准确收到,并胜利落地 app 本地 db。对于失败的 3 条音讯,接管方的确没有收到,确保零碎音讯一致性。

零碎具备优良的平行扩大能力,除存储模块外,其余模块都无状态,反对亿级用户,千亿音讯量。

github 地址:https://github.com/OpenIMSDK/…

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

简要形容

管理员通过后盾接口发送告诉类型音讯

申请 URL

http://x.x.x.x:10000/manager/…

申请形式

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
申请参数

参数名 类型 必选 阐明
operationID string 是 操作 ID,放弃惟一,倡议用以后工夫微秒 + 随机数,用于后盾链路追踪问题应用
sendID string 是 管理员 ID,为后盾 config 文件中配置的管理员 ID 中一个,默认 openIM123456
recvID string 是 接收者 userID
senderPlatformID int 否 发送者平台号,模仿用户发送时填写,1->IOS,2->Android,3->Windows,4->OSX,5->Web,5->MiniWeb,7->Linux
senderFaceURL string 否 发送者头像,用于客户端告诉会话产生
senderNickname string 否 发送者昵称,用于客户端告诉会话产生
content object 是 音讯的具体内容,外部是 json 对象
notificationName string 是 告诉题目
notificationFaceURL string 是 告诉头像
notificationType int 是 告诉类型,如:1 代表入职告诉,2 代表到职告诉
text string 是 告诉注释 e
externalUrl string 否 告诉点击后须要跳转到的地址链接(不填则无需跳转)
mixType int 是 告诉混合类型 0:纯文字告诉 1:文字 + 图片告诉 2:文字 + 视频告诉 3:文字 + 文件告诉
pictureElem object 否 图片元素对象
sourcePicture object 否 原图
bigPicture object 否 大图
snapshotPicture object 否 缩略图
soundElem object 否 声音元素对象
videoElem object 否 视频元素对象
fileElem object 否 文件元素对象
uuid string 否 对象惟一 ID 用于缓存应用
type/videoType/ string 否 图片类型 / 视频类型
size/dataSize/videoSize/snapshotSize/fileSize int 否 多媒体文件大小,单位字节
width/snapshotWidth int 否 图片 / 视频缩略图宽度
height/snapshotHeight int 否 图片 / 视频缩略图高度
url/sourceUrl/videoUrl string 否 图片 / 文件 / 视频的 URL
sourcePath/soundPath/videoPath/filePath string 否 文件门路,可不填写
fileName string 否 文件名字
ex string 否 扩大字段
contentType int 是 音讯类型固定为 1400
sessionType int 是 告诉会话类型固定为 4
isOnlineOnly bool 否 改字段设置为 true 时候,发送的音讯服务器不会存储,接收者在线才会收到,不在线该音讯失落。
offlinePushInfo object 否 离线推送的具体内容,如果不填写,应用服务器默认推送题目
title string 否 推送的题目
desc string 否 推送的具体形容
ex string 否 扩大字段
iOSPushSound string 否 IOS 的推送声音
iOSBadgeCount bool 否 IOS 推送音讯是否计入桌面图标未读数
返回示例

{
“errCode”: 0,
“errMsg”: “”,
“data”: {

 "serverMsgID": "","clientMsgID":"", 
 "sendTime": 1645697804432

}
}Copy to clipboardErrorCopied
返回参数

参数名 类型 阐明
errCode int 0 胜利,非 0 失败
errMsg string 错误信息
sendTime int 音讯发送的具体工夫,具体为毫秒的工夫戳
serverMsgID string 服务器生成的音讯的惟一 ID
clientMsgID string 客户端生成的音讯惟一 ID,默认状况应用这个为主键
音讯类型格局形容

简要形容

管理员音讯发送字段中 contentType 反对的音讯类型阐明以及音讯 content 的具体字段阐明。

ContentType 音讯类型阐明

ContentType 值 类型阐明
101 文本音讯
102 图片音讯
103 音频音讯
104 视频音讯
105 文件音讯
106 群聊中的 @类型音讯
107 合并转发类型音讯
108 名片音讯
109 地理位置类型音讯
110 自定义音讯
111 撤回类型音讯
112 已读回执类型音讯
114 援用类型音讯
Content 具体内容

content 外部为具体的 json 对象,不同的音讯类型是不同的 json 对象

文本音讯

{
…,
“content”: {

 "text": "nihao"

},
….
}Copy to clipboardErrorCopied
参数名 必选 类型 阐明
text 是 string 文本音讯的具体内容
自定义音讯

{
…,
“content”: {

 "data": "","description":"", 
 "extension": ""

},
….
}Copy to clipboardErrorCopied
参数名 类型 必选 阐明
data json string 是 用户自定义的音讯为 json 对象转换后的 string
description json string 否 扩大的形容信息为 json 对象转换后的 string,能够不应用
extension json string 否 扩大字段,临时不应用

正文完
 0