日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IM开发——群组创建业务设计

發布時間:2024/3/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IM开发——群组创建业务设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近更新:

  • 2021-10-14:增加效果圖和代碼鏈接。
  • 2020-11-02:初稿。

需求分析

群聊是很基礎的功能需求,在進行群組聊天前,逃不過創建群組的這么一個過程。

接下來,我們對微信進行一個簡單的分析,然后設計一套類似于微信操作體驗的業務。

主動方:

被動方:

所以,根據上面的圖,分析可得:

  • 創建群組的時候,需要能指定成員列表
  • 創建成功后,要自動創建會話,并產生一條群提示,廣播給其他人,被邀請加入了群聊。
  • 模塊交互設計

  • app發送創建群組請求,附帶群組名稱(為空時,自動生成群名)和成員列表
  • 轉發
  • 插入群組
  • 添加成員
  • 為每個人創建群聊會話
  • 插入一條群聊消息,消息類型為tips,內容為"xx邀請你,yy和zz加入群聊",并添加到attach_notificatino_msg字段中,以便gate網關,直接廣播系統通知消息給對應的群成員
  • 返回
  • 給客戶端響應,客戶端讀取會話ID和加載tips內容“你邀請xx,yy和zz加入了群聊”
  • 廣播群聊消息
  • 廣播群聊消息
  • 協議設計

    創建群

    // 創建討論組群請求(類似微信): // 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开发——群组创建业务设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。