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