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

OpenIM · · 1162 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

介绍 OpenIM每周五发布新版,包括新特性发布,bug修复,同时合并PR 由于2.0版本重构完毕,架构更清晰,代码更规范,先邀请各位参与OpenIM社区建设,包括技术开发,技术分享等,特性开发,性能优化,bug修复等,有兴趣的同学可以加我私聊。 ![image.png](https://static.studygolang.com/220319/616466fddfacfe25c2a32c38051c41f4.png) 可以多人音视频聊天,以及多端同步呼叫。 web端体验:https://open-im-online.rentsoft.cn/ 安卓端体验:https://www.pgyer.com/OpenIM iOS端体验:https://testflight.apple.com/join/79cQqBYd 项目成果 项目整体超过7K star,我们继续努力争做开源IM的领跑者,请大家多多支持。消息通过经过压测和可靠性测试,请放心用于生产环境。 ![成果.png](https://static.studygolang.com/220319/6142aa6743a4c14c6bc8177fbcee7418.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版本的客户端,需要商业授权,对于某些高级功能,也需要商业授权。

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

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

1162 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传