关键词:
参考技术A 以办公场景为例,比如员工入职通知,放假通知等业务通知,由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.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
请求参数
参数名类型必选说明
operationIDstring是操作ID,保持唯一,建议用当前时间微秒+随机数,用于后台链路追踪问题使用
sendIDstring是管理员ID,为后台config文件中配置的管理员ID中一个,默认openIM123456
recvIDstring是接收者userID
senderPlatformIDint否发送者平台号,模拟用户发送时填写, 1->IOS,2->Android,3->Windows,4->OSX,5->Web,5->MiniWeb,7->Linux
senderFaceURLstring否发送者头像,用于客户端通知会话产生
senderNicknamestring否发送者昵称,用于客户端通知会话产生
contentobject是消息的具体内容,内部是json 对象
notificationNamestring是通知标题
notificationFaceURLstring是通知头像
notificationTypeint是通知类型,如:1代表入职通知,2代表离职通知
textstring是通知正文e
externalUrlstring否通知点击后需要跳转到的地址链接(不填则无需跳转)
mixTypeint是通知混合类型 0:纯文字通知 1:文字+图片通知 2:文字+视频通知 3:文字+文件通知
pictureElemobject否图片元素对象
sourcePictureobject否原图
bigPictureobject否大图
snapshotPictureobject否缩略图
soundElemobject否声音元素对象
videoElemobject否视频元素对象
fileElemobject否文件元素对象
uuidstring否对象唯一ID用于缓存使用
type/videoType/string否图片类型/视频类型
size/dataSize/videoSize/snapshotSize/fileSizeint否多媒体文件大小,单位字节
width/snapshotWidthint否图片/视频缩略图宽度
height/snapshotHeightint否图片/视频缩略图高度
url/sourceUrl/videoUrlstring否图片/文件/视频的URL
sourcePath/soundPath/videoPath/filePathstring否文件路径,可不填写
fileNamestring否文件名字
exstring否扩展字段
contentTypeint是消息类型固定为1400
sessionTypeint是通知会话类型固定为4
isOnlineOnlybool否改字段设置为true时候,发送的消息服务器不会存储,接收者在线才会收到,不在线该消息丢失。
offlinePushInfoobject否离线推送的具体内容,如果不填写,使用服务器默认推送标题
titlestring否推送的标题
descstring否推送的具体描述
exstring否扩展字段
iOSPushSoundstring否IOS的推送声音
iOSBadgeCountbool否IOS推送消息是否计入桌面图标未读数
返回示例
"errCode": 0,
"errMsg": "",
"data":
"serverMsgID": "",
"clientMsgID": "",
"sendTime": 1645697804432
Copy to clipboardErrorCopied
返回参数
参数名类型说明
errCodeint0成功,非0失败
errMsgstring错误信息
sendTimeint消息发送的具体时间,具体为毫秒的时间戳
serverMsgIDstring服务器生成的消息的唯一ID
clientMsgIDstring客户端生成的消息唯一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
参数名类型必选说明
datajson string是用户自定义的消息为json对象转换后的string
descriptionjson string否扩展的描述信息为json对象转换后的string,可以不使用
extensionjson string否扩展字段,暂时不使用
mpush开源消息推送系统:简洁安全支持集群
...息推送系统来替换JPUSH,一直找了很久基本没有真正可用的开源系统所有就直接造了个轮子,造轮子的时候就奔着开源做打算的,只是后来创业项目失败一直没时间整理这一套代码,最近比较闲就拿出来给开源做点贡献。作为Java... 查看详情
mpush开源消息推送系统:简洁安全支持集群
...息推送系统来替换JPUSH,一直找了很久基本没有真正可用的开源系统所有就直接造了个轮子,造轮子的时候就奔着开源做打算的,只是后来创业项目失败一直没时间整理这一套代码,最近比较闲就拿出来给开源做点贡献。作为Java... 查看详情
开源轻量级im框架mobileimsdk的微信小程序端已发布!
开源轻量级IM框架MobileIMSDK的微信小程序端已发布。一、基本介绍MobileIMSDK-微信小程序端是一套基于微信原生WebSocket的即时通讯库:1)超轻量级、无任何第3方库依赖(开箱即用);2)纯JS编写、ES6语法、高度提炼,简单易用;3... 查看详情
基于环信的二次元恋爱互动社交开源项目---mua附源码地址
Mua是由环信MVP开发者精心打造的开源项目,提供Demo体验和示例源码,支持开发者结合业务需要灵活自定义产品形态。Mua是一个二次元恋爱互动社交APP,有类似项目需求的创业者或想拥有甜蜜恋爱过程的开发者们都可... 查看详情
java开源项目消息推送平台系统搭建
前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁名字倒没有什么特别的含义,我单纯觉... 查看详情
java开源项目消息推送平台系统搭建(代码片段)
前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁名字倒没有什么特别的含义,我单纯觉... 查看详情
开源轻量级im框架mobileimsdk的uniapp客户端库已发布!
MobileIMSDK-Uniapp端是一套基于Uniapp跨端框架的即时通讯库。一、基本介绍MobileIMSDK-Uniapp端是一套基于Uniapp跨端框架的即时通讯库:1)超轻量级、无任何第3方库依赖(开箱即用);2)纯JS编写、ES6语法、高度提炼,简单易用;3)基... 查看详情
消息推送平台终于要发布啦!
我的开源项目消息推送平台Austin终于要上线了,迎来在线演示的第一版! 查看详情
开源即时通讯im框架mobileimsdk的微信小程序端技术概览
...bsp;配套客户端库。MobileIMSDK 是一套专为移动端开发的开源原创IM通信层框架:历经8年、久经考验;超轻量级、高度提炼,lib包50KB以内;精心封装,一套API同时支持 UDP、TCP、WebSocket 三种协议(可能是全网唯一开源的... 查看详情
开源中国社区开源项目排行榜
jsexcel控件网页excel1.t-io:百万级即时通讯框架t-io是一个网络框架,从这一点来说是有点像netty的,但t-io的特点在于,它不仅仅是一个网络框架, 因为它为常见和网络相关的业务(如IM、消息推送、RPC、监... 查看详情
java开源项目消息推送平台发送一条短信(代码片段)
我是3y,一年CRUD经验用十年的markdown程序员👨🏻💻常年被誉为优质八股文选手austin项目实现的第一个渠道::从发送短信开始01、短信介绍在项目介绍的时候,已经定义了austin项目的核心功能:... 查看详情
java开源项目消息推送平台发送一条短信(代码片段)
我是3y,一年CRUD经验用十年的markdown程序员👨🏻💻常年被誉为优质八股文选手austin项目实现的第一个渠道::从发送短信开始01、短信介绍在项目介绍的时候,已经定义了austin项目的核心功能:... 查看详情
基于开源im即时通讯框架mobileimsdk:rainbowchatv8.2版已发布
关于MobileIMSDKMobileIMSDK是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。工程开源地址是:1... 查看详情
java开源项目消息推送平台日志引入(代码片段)
大家好,我是3y。在正文之前,先给各位粉丝汇报下austin消息推送平台项目进度:总的来说,我感觉这次的反响是不错的,虽然阅读量不高。但留言的人多了很多,也有很多人都担心我会不会鸽掉(更... 查看详情
github上多星项目no.7
...的即时通讯(IM)项目,从服务端到客户端SDK开源即时通讯(IM)整体解决方案,可以轻松替代第三方IM云服务,打造具备聊天、社交功能的app。https://github.com/OpenIMSDK/Open-IM-Serverhttps://github.com/OpenIMSDK/Open... 查看详情
使用websocket实现消息推送
WebSocket上联系客服功能在项目中很难避免,一般有下面三种实现方式:使用http的get方式轮询接入第三方IM系统自己的IM系统基于socket基于websocket第一种方式,最low的,实现简单,但是浪费用户流量;第二种方式,接入简单,功能... 查看详情
阿里im技术分享(六):闲鱼亿级im消息系统的离线推送到达率优化
参考技术A本文由阿里闲鱼技术团队逸昂分享,原题“消息链路优化之弱感知链路优化”,有修订和改动,感谢作者的分享。闲鱼的IM消息系统作为买家与卖家的沟通工具,增进理解、促进信任,对闲鱼的商品成交有重要的价值,... 查看详情
rubyweb实时消息后台服务器推送技术---goeasy
越来越多的项目需要用到实时消息的推送与接收,怎样用Ruby实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!浏览器兼容性:GoEasy推送支持websocket和polling两种连接方式... 查看详情