介绍

OpenIM每周五发布新版,包括新特性发布,bug修复,同时合并PR

由于2.0版本重构完毕,架构更清晰,代码更规范,先邀请各位参与OpenIM社区建设,包括技术开发,技术分享等,特性开发,性能优化,bug修复等,有兴趣的同学可以加我私聊。

可以多人音视频聊天,以及多端同步呼叫。

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

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

iOS端体验:https://testflight.apple.com/join/79cQqBYd

项目成果

项目整体超过7K star,我们继续努力争做开源IM的领跑者,请大家多多支持。消息通过经过压测和可靠性测试,请放心用于生产环境。

性能及容量总结

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

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

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

可靠性总结

启动sdk,模拟50个用户在线、离线情况,消息可靠性100%。

发送10万消息,有3条失败,其他消息都能被对方精确收到,并成功落地本地db。对于失败的3条消息,接收方确实没有收到,系统消息是一致的。

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

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

本周版本 客户端SDK v2.0.3 &&服务端 v2.0.4

特性 类别
群聊已读,发送者能看到本条消息哪些人已读,哪些人未读,对于办公场景极为有用 新特性
音视频通话优化,信令通道建设 新特性
消息发送失败,点击可重新发送 新特性
消息免打扰,接收但不提醒 新特性
动态表情包添加 新特性
聊天背景设置 新特性
etcd在keepalive失败时容错 bug修复
聊天记录中昵称和头像实时同步,多端同步 bug修复
发消息 好友权限验证 ,可配置 bug修复
docker镜像v2.0.4 已更新,请拉取最新镜像, 见文档:https://doc.rentsoft.cn/#/demo/server_deploy/docker_singe

OpenIM每周都会迭代发布新版本,别值得注意的是,版本号的第一位数字代表大版本,一般是做了协议改造升级,服务器和客户端两者必须保持大版本一致。

分支说明:

(1)dev:外部开发者在此分支上提交pr;

(2)tuoyun:OpenIM内部专用;

(3)main:最新可用分支;(建议大家用tag版本)

开发中的特性

特性 预计完成时间
私聊消息可选择阅后即焚 3月25日
删除历史记录云端同步 3月25日
群管理:解散群,禁言,昵称修改等 4月1日
第三方通知类型:比如oa通知,hr通知等 4月1日
音视频通话相关rtc信令接口

音视频监听回调说明

音视频通话监听,在login之前调用SetSignalingListener(callback open_im_sdk_callback.OnSignalingListener)设置

type OnSignalingListener interface {
//被邀请者收到:音视频通话邀请
OnReceiveNewInvitation(receiveNewInvitationCallback string)
receiveNewInvitationCallback为
{
“opUserID”: “18666662412”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [
“18349115126”
],
“groupID”: “f2e77b9ec33e92298675ad511fdfa6ab”,
“roomID”: “room_id_111”,
“timeout”: 1000,
“mediaType”: “video”,
“sessionType”: 2
},
“offlinePushInfo”: { }
}

//邀请者收到:被邀请者同意音视频通话
OnInviteeAccepted(inviteeAcceptedCallback string)
inviteeAcceptedCallback为
{
“opUserID”: “18349115126”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [“18349115126”],
“groupID”: “f2e77b9ec33e92298675ad511fdfa6ab”,
“roomID”: “room_id_111”,
“timeout”: 1000,
“mediaType”: “video”,
“sessionType”: 2
},
“offlinePushInfo”: {}
}

//邀请者收到:被邀请者拒绝音视频通话
OnInviteeRejected(inviteeRejectedCallback string)
inviteeRejectedCallback为
{
“opUserID”: “18349115126”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [“18349115126”],
“groupID”: “f2e77b9ec33e92298675ad511fdfa6ab”,
“roomID”: “room_id_111”,
“timeout”: 1000,
“mediaType”: “video”,
“sessionType”: 2
},
“offlinePushInfo”: {}
}

//被邀请者收到:邀请者取消音视频通话
OnInvitationCancelled(invitationCancelledCallback string)
invitationCancelledCallback为
{
“opUserID”: “18666662412”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [
“18349115126”
],
“roomID”: “room_id_111”,
“timeout”: 10,
“mediaType”: “video”,
“platformID”: 1,
“sessionType”: 1
},
“offlinePushInfo”: { }
}
//邀请者收到:被邀请者超时未接通
OnInvitationTimeout(invitationTimeoutCallback string)
invitationTimeoutCallback为
{
“opUserID”: “18666662412”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [“18349115126”],
“roomID”: “room_id_111”,
“timeout”: 10,
“mediaType”: “video”,
“platformID”: 1,
“sessionType”: 1
},
“offlinePushInfo”: {}
}

//被邀请者(其他端)收到:比如被邀请者在手机拒接,在pc上会收到此回调
OnInviteeRejectedByOtherDevice(inviteeRejectedCallback string)
//被邀请者(其他端)收到:比如被邀请者在手机接听,在pc上会收到此回调
OnInviteeAcceptedByOtherDevice(inviteeAcceptedCallback string)

音视频邀请invitationInfo结构说明

音视频邀请相关信息
{
“inviterUserID”: “18666662412”, //邀请者UserID
“inviteeUserIDList”: [“18349115126”], //被邀请者UserID列表,如果是单聊只有一个元素
“groupID”: “f2e77b9ec33e92298675ad511fdfa6ab”, //如果是单聊,为""
“roomID”: “room_id_111”, //房间ID,必须唯一,可以不设置。
“timeout”: 1000, //邀请超时时间(秒)
“mediaType”: “video”, //video 或者audio
“sessionType”: 2 //1为单聊,2为群聊
“platformID”:1 //和之前定义一致
}

metadata是参与者信息具体为
ParticipantMetaData
{
GroupInfo //为群通话时有效
GroupMemberInfo //为群通话时有效
PublicUserInfo
}

音视频函数参数及回调说明

SignalingInvite(callback open_im_sdk_callback.Base, operationID string, signalInviteReq string)
说明:邀请个人加入音视频
请求参数:
{
“invitation”: {
“inviteeUserIDList”: [“18349115126”], //只有一个元素
“roomID”: “room_id_111”,
“timeout”: 1000,
“mediaType”: “video”,
“sessionType”: 1,
“platformID”:1
}
“offlinePushInfo”:{}
}

回调:成功时,OnSuccess回调
{
“token”: “18666662412”,
“roomID”: “room_id_111”,
“liveURL”: “wss://”
}

SignalingInviteInGroup(callback open_im_sdk_callback.Base, operationID string, signalInviteInGroupReq string)
说明:邀请群里某些人加入音视频
请求参数
{
“invitation”: {
“inviteeUserIDList”: [“18349115126”],
“groupID”: “f2e77b9ec33e92298675ad511fdfa6ab”,
“roomID”: “room_id_111”,
“timeout”: 1000,
“mediaType”: “video”,
“sessionType”: 2
}
}

回调:成功时,OnSuccess回调
{
“token”: “18666662412”,
“roomID”: “room_id_111”,
“liveURL”: “ws://”
}

SignalingAccept(callback open_im_sdk_callback.Base, operationID string, signalAcceptReq string)
说明:同意某人音视频邀请
请求参数
{
“opUserID”: “18349115126”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [
“18349115126”
],
“groupID”: “f2e77b9ec33e92298675ad511fdfa6ab”,
“roomID”: “room_id_111”,
“timeout”: 1000,
“mediaType”: “video”,
“sessionType”: 2
}
}

回调:成功时,OnSuccess回调
OnSuccess
{
“token”: “18349115126”,
“roomID”: “room_id_111”,
“liveURL”: “”
}
SignalingReject(callback open_im_sdk_callback.Base, operationID string, signalRejectReq string)
说明:拒绝某人音视频邀请
请求参数
{
“opUserID”: “18349115126”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [
“18349115126”
],
“groupID”: “f2e77b9ec33e92298675ad511fdfa6ab”,
“roomID”: “room_id_111”,
“timeout”: 1000,
“mediaType”: “video”,
“sessionType”: 2
}
}
回调:成功时,OnSuccess回调
OnSuccess{}

SignalingCancel(callback open_im_sdk_callback.Base, operationID string, signalCancelReq string)
说明:邀请者取消音视频通话
请求参数
{
“opUserID”: “18666662412”,
“invitation”: {
“inviterUserID”: “18666662412”,
“inviteeUserIDList”: [“18349115126”],
“roomID”: “room_id_111”,
“timeout”: 10,
“mediaType”: “video”,
“platformID”: 1,
“sessionType”: 1
}
}

回调:成功时,OnSuccess回调
OnSuccess{}
我们的团队

创始团队来自前微信技术团队,我们致力于用开源技术创造服务价值,打造轻量级、高可用的IM架构,开发者只需简单调用 SDK,即可在应用内构建多种即时通讯及实时音视频互动场景。无论是电子政务办公,企业协同办公,或者去中心化的web3应用,OpenIM都是最优选择。对于IM最核心的服务端和客户端SDK,大家可以免费商用,对于带有UI版本的客户端,需要商业授权,对于某些高级功能,也需要商业授权。

即时通讯(IM)开源项目OpenIM每周迭代版本发布-音视频实时通话-v2.0.4相关推荐

  1. 开源IM项目OpenIM每周迭代版本发布-群管理 阅后即焚等-v2.0.6

    新特性介绍 OpenIM每周五发布新版,包括新特性发布,bug修复,同时合并PR,解决issue等 一个完善的IM系统,非常复杂,功能繁多,需求不一,比如对象存储有云端oss,cos,s3,私有化存储 ...

  2. # 重要-即时通讯IM开源项目OpenIM关于版本管理及v2.3.0发布计划

    越来越多的客户把OpenIM用到了生产环境,由于新特性持续迭代和bug修复,会涉及到后续的升级方案,为了让大家后续从容应对,本文重点总结OpenIM对未来版本管理的思路和方案.同时,官网对于文档进行了 ...

  3. 收藏-即时通讯(IM)开源项目OpenIM-功能手册

    OpenIM简介 OpenIM是由IM技术专家打造的开源即时通讯组件,也是目前最受欢迎的开源IM项目之一,目前github star近万.开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时 ...

  4. 即时通讯(IM)开源项目OpenIM重构版本发布- v2.0.0

    介绍 OpenIM开发团队花费了2个月时间,加班加点对代码进行了局部重构,优化代码结构,规范代码开发流程,为社区未来深度参与开发打好基础.由于改动较大,涉及大量的测试工作,并且还有打包 发布 等一些琐 ...

  5. IM开源项目OpenIM部署文档-从准备工作到nginx配置

    IM开源项目OpenIM部署文档-从准备工作到nginx配置 2022-11-14 22:27·OpenIM 一.准备工作 运行环境 linux系统即可, Ubuntu 7.5.0-3ubuntu1~ ...

  6. 即时通讯 视频会议开源技术选择

    在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈.有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频会 ...

  7. 环信开源计划开启即时通讯云开源平台时代

    12月22日,在"首届移动社交创新价值峰会"上,环信即时通讯云(http://www.easemob.com)发布了被称为"4X100计划"的<环信开源平 ...

  8. 基于Linux下的即时通讯聊天室项目(全代码 有注释 可直接运行)

    基于Linux下的即时通讯聊天室项目 一.序言 二.具体功能 三.系统客户要求 四.具体代码 1.服务器代码 2.客户端代码 一.序言 最近在写一个基于Linux下的聊天工具 它适合于局域网内所有人进 ...

  9. 即时通讯:XMPP项目实践-微聊

    即时通讯系列阅读 即时通讯基础 即时通讯:XMPP基础 即时通讯:XMPP项目实践-微聊 Smack类库最好的学习资料 1. 项目简介 做一个类似QQ 的通讯工具,要求有注册.登录.添加好友.添加分组 ...

最新文章

  1. 区间数计算之Python实现
  2. boost::units::quantity相关的测试程序
  3. Geodatabase中基于规则的拓扑关系管理机制
  4. 键盘流的逆袭- Idea 中使用 VIM mode 提高生成效率
  5. 动态规划训练22 [Milking Time POJ - 3616 ]
  6. 全球44家机构,55位大佬,历时两年,打造最强NLG评测基准!
  7. MySQL 添加where 1= 1 是否会引起索引失效
  8. java字符串拼接_这样写Java,同事直呼666
  9. [unity3d]Assetbundle使用示例2(支持多平台)
  10. Sql Server 行转列学习 根据学生表、课程表、学生成绩表统计每个学生的各科成绩和他的总成绩、平均成绩...
  11. 第三十一章 线程------GIL、线/近程池、异/同步、异步回调
  12. Springboot的工作机制:5 总结
  13. html移动图片广告代码,右下角弹出广告代码 控制div移动 1)div是否
  14. 多测师拱墅校区肖sir___性能测试之单个接口性能和多个接口性能测试(3)
  15. 硬盘测试软件cry,CrystalDiskMark测试硬盘官方版
  16. 高中数学必修一:集合高考典型例题解题技巧方法
  17. QEMU 网络配置一把梭
  18. 深入理解风控中的 KS 原理
  19. 用html实现抽奖大转盘,【项目实战】用CSS实现一个抽奖转盘(附详细代码+思路)...
  20. VC维的来龙去脉 | 火光摇曳

热门文章

  1. SLF4J: Class path contains multiple SLF4J bindings(log4j与logback冲突了)
  2. iOS签名校验那些事儿
  3. FISCO-BCOS学习——区块链浏览器搭建
  4. 电力系统潮流程序C语言,电力系统潮流C语音程
  5. Windows系统的重要文件目录
  6. teambition桌面客户端的妙用(绝密)
  7. Win10笔记本WIFI的标志突然变成了一个地球的解决方案(二)
  8. 建立“图书_读者”数据库及如下 3 个表,并输入实验数据,用 SQL 语句实现如下五个查询(opengauss)
  9. App云测试平台有哪些?
  10. android 虚拟按键自定义,Android手机底部栏虚拟按键的操作