介绍

OpenIM每周五公布新版,包含新个性公布,bug修复,同时合并PR

因为2.0版本重构结束,架构更清晰,代码更标准,先邀请各位参加OpenIM社区建设,包含技术开发,技术分享等,个性开发,性能优化,bug修复等,有趣味的同学能够加我私聊。


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

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

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

iOS端体验:https://testflight.apple.com/...

我的项目成绩

我的项目整体超过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/...

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

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

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

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版本的客户端,须要商业受权,对于某些高级性能,也须要商业受权。