6

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

 2 years ago
source link: https://studygolang.com/articles/35544
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

OpenIM · 3天之前 · 269 次点击 · 预计阅读时间 8 分钟 · 大约8小时之前 开始浏览    

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

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

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

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

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

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

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

成果.png介绍

性能及容量总结

服务器资源: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版本的客户端,需要商业授权,对于某些高级功能,也需要商业授权。


有疑问加站长微信联系(非本文作者))

280

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK