IM开发——群组创建业务设计
生活随笔
收集整理的這篇文章主要介紹了
IM开发——群组创建业务设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近更新:
- 2021-10-14:增加效果圖和代碼鏈接。
- 2020-11-02:初稿。
需求分析
群聊是很基礎的功能需求,在進行群組聊天前,逃不過創建群組的這么一個過程。
接下來,我們對微信進行一個簡單的分析,然后設計一套類似于微信操作體驗的業務。
主動方:
被動方:
所以,根據上面的圖,分析可得:
模塊交互設計
協議設計
創建群
// 創建討論組群請求(類似微信): // 1.無需對方同意 // 2.群成員可邀請任何人進群 // 3.創建人默認為群主,群主可轉讓,群主退出默認隨機一個成員自動成為群主 // 4.只有群主可修改群公告,踢人 message CIMGroupCreateReq {// cmd id: 0x501uint64 user_id = 1;string group_name = 2; // 群名,不指定則由服務端生成repeated uint64 member_id_list = 3; // 群成員列表 }// 群組創建響應 message CIMGroupCreateRsp {// cmd id: 0x502uint64 user_id = 1;uint32 result_code = 2;CIMGroupInfo group_info = 3; // 群信息repeated uint64 member_id_list = 4; // 群成員列表bytes attach_notificatino_msg = 10; // 群創建系統通知,需要廣播 }// 群組類型 enum CIMGroupType {kCIM_GROUP_TYPE_UNKNOWN = 0;kCIM_GROUP_TYPE_GROUP_NORMAL = 1; // 普通群(200人)kCIM_GROUP_TYPE_GROUP_SUPER = 2; // 超級群(2000人) }// 加群模式 enum CIMGroupJoinModel {kCIM_GROUP_JOIN_MODEL_DEFAULT = 0; // 所有人可邀請別人加入kCIM_GROUP_JOIN_MODEL_NEED_AUTH = 1; // 需要管理員驗證kCIM_GROUP_JOIN_MODEL_REJECT = 2; // 拒絕所有人 }// 被邀請人同意方式 enum CIMGroupBeInviteMode {kCIM_GROUP_BE_INVITE_MODEL_DEFAULT = 0; // 不需要同意kCIM_GROUP_BE_INVITE_MODEL_NEED_AGREE = 1; // 需要同意 }// 禁言方式 enum CIMGroupMuteModel {kCIM_GROUP_MUTE_MODEL_DEFAULT = 0; // 不禁言kCIM_GROUP_MUTE_MODEL_ALL = 1; // 全體禁言 }// 群組信息 message CIMGroupInfo {uint64 group_id = 1; // 群組IDstring group_name = 2; // 群組名稱(最大128字符)CIMGroupType group_type = 3; // 群類型CIMGroupJoinModel join_model = 4; // 入群模式CIMGroupBeInviteMode be_invite_model = 5; // 被邀請人同意方式CIMGroupMuteModel mute_model = 6; // 禁言模式uint64 group_owner_id = 7; // 群主uint32 create_time = 8; // 創建時間uint32 update_time = 9; // 群信息更新時間string group_intro = 10; // 群介紹,別人搜索入群的時候顯示string announcement = 11; // 群公告string group_avatar = 12; // 群頭像 }解散群
// 解散群請求 message CIMGroupDisbandingReq {// cmd id: 0x503uint64 user_id = 1;uint64 group_id = 2; }message CIMGroupDisbandingRsp {// cmd id: 0x504uint64 user_id = 1;uint64 group_id = 2;uint32 result_code = 3;bytes attach_notificatino_msg = 10; // 群解散系統通知,需要廣播 }退群
// 退出群 message CIMGroupExitReq {// cmd id: 0x505uint64 user_id = 1;uint64 group_id = 2; }// 退出群 message CIMGroupExitRsp {// cmd id: 0x506uint64 user_id = 1;uint64 group_id = 2;uint32 result_code = 3;bytes attach_notificatino_msg = 10; // 群成員退出群系統通知,需要廣播 }查詢群列表
// 查詢群列表請求 message CIMGroupListReq {// cmd id: 0x507uint64 user_id = 1; }// 查詢群列表響應 message CIMGroupListRsp {// cmd id: 0x508uint64 user_id = 1;repeated CIMGroupVersionInfo group_version_list = 2; }// 群版本信息 message CIMGroupVersionInfo {uint64 group_id = 1;uint32 group_version = 2; }注意,這里返回的是ID+群版本號,可以方便將來擴展。具體的群信息,還需要查詢一次。
群信息
// 查詢群信息請求 message CIMGroupInfoReq {// cmd id: 0x509uint64 user_id = 1;repeated CIMGroupVersionInfo group_version_list = 2; }// 查詢群信息響應 message CIMGroupInfoRsp {// cmd id: 0x510uint64 user_id = 1;uint32 result_code = 2;repeated CIMGroupInfo group_info_list = 3; }拉人
// 邀請人入群請求 message CIMGroupInviteMemberReq {// cmd id: 0x511uint64 user_id = 1;uint64 group_id = 2;repeated uint64 member_id_list = 3; // 成員ID列表 }// 邀請人入群響應 message CIMGroupInviteMemberRsp {// cmd id: 0x512uint64 user_id = 1;uint64 group_id = 2;uint32 result_code = 3;bytes attach_notificatino_msg = 10; // 入群系統通知,需要廣播 }為了簡化,這里沒有驗證機制,而是直接把對方加入到群內。
踢人
// 踢人請求 message CIMGroupKickOutMemberReq {// cmd id: 0x513uint64 user_id = 1;uint64 group_id = 2;repeated uint64 member_id_list = 3; // 成員ID列表 }// 踢人響應 message CIMGroupKickOutMemberRsp {// cmd id: 0x514uint64 user_id = 1;uint64 group_id = 2;uint32 result_code = 3;bytes attach_notificatino_msg = 10; // 踢人系統通知,需要廣播 }效果
創建群
代碼
請移步:
- Server
CoffeeChat:
https://github.com/xmcy0011/CoffeeChat
opensource im with server(go) and client(flutter+swift)
- iOS:https://github.com/xmcy0011/CoffeeChat/client/ios
參考了TeamTalk、瓜子IM等知名項目,包含服務端(go)和客戶端(swift),單聊、群聊和機器人(小微、圖靈、思知)聊天功能已完成,歡迎對golang和跨平臺開發flutter技術感興趣的小伙伴Star加關注。
總結
以上是生活随笔為你收集整理的IM开发——群组创建业务设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恒星物联-河道流量监测系统方案 流量监测
- 下一篇: 迎新年,心仪脑新年福利大放送