写点什么

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

作者:Geek_1ef48b
  • 2022 年 3 月 19 日
  • 本文字数:3758 字

    阅读完需:约 12 分钟

介绍

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

docker 镜像 v2.0.4 已更新,请拉取最新镜像, 见文档:https://doc.rentsoft.cn/#/demo/server_deploy/docker_singe

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

分支说明:

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

(2)tuoyun:OpenIM 内部专用;

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

开发中的特性

音视频通话相关 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 版本的客户端,需要商业授权,对于某些高级功能,也需要商业授权。


用户头像

Geek_1ef48b

关注

还未添加个人签名 2021.08.25 加入

还未添加个人简介

评论

发布
暂无评论
即时通讯(IM)开源项目OpenIM每周迭代版本发布-音视频实时通话-v2.0.4_Geek_1ef48b_InfoQ写作平台