Geschäftsentwicklung zur Erstellung von IM-Entwicklungsgruppen

Bedarfsanalyse

Gruppenchat ist eine sehr grundlegende funktionale Anforderung. Vor einem Gruppenchat können Sie sich dem Prozess des Erstellens einer Gruppe nicht entziehen.

Als Nächstes führen wir eine einfache Analyse von WeChat durch und entwerfen dann eine Reihe von Diensten, die der Betriebserfahrung von WeChat ähneln.

Aktive Partei:
Fügen Sie hier eine Bildbeschreibung ein

Passive Partei:
Fügen Sie hier eine Bildbeschreibung ein
Daher kann die Analyse gemäß dem obigen Diagramm Folgendes erhalten:

  1. Wenn Sie eine Gruppe erstellen, müssen Sie in der Lage sein, eine Liste der Mitglieder anzugeben
  2. Nach erfolgreicher Erstellung wird automatisch eine Sitzung erstellt und eine Gruppenaufforderung generiert, an andere Personen gesendet und zur Teilnahme am Gruppenchat eingeladen.

Design der Modulinteraktion

Fügen Sie hier eine Bildbeschreibung ein

  1. Die App sendet eine Anforderung zum Erstellen einer Gruppe mit dem Gruppennamen (wenn dieser leer ist, wird der Gruppenname automatisch generiert) und einer Liste der Mitglieder
  2. Nach vorne
  3. Gruppe einfügen
  4. Mitglied hinzufügen
  5. Erstellen Sie Gruppenchat-Sitzungen für alle
  6. Fügen Sie eine Gruppenchat-Nachricht ein, der Nachrichtentyp ist Tipps, der Inhalt lautet "xx lädt Sie, yy und zz ein, dem Gruppenchat beizutreten" und fügen Sie ihn dem Feld attach_notificatino_msg hinzu, damit das Gate-Gateway Systembenachrichtigungsnachrichten direkt an senden kann die entsprechenden Gruppenmitglieder
  7. Rückkehr
  8. Antworten Sie dem Client, der Client liest die Sitzungs-ID und lädt den Inhalt der Tipps "Sie haben xx, yy und zz eingeladen, am Gruppenchat teilzunehmen".
  9. Gruppen-Chat-Nachrichten senden
  10. Gruppen-Chat-Nachrichten senden

Protokolldesign

Erstellen Sie eine Gruppe

// 创建讨论组群请求(类似微信):
// 1.无需对方同意
// 2.群成员可邀请任何人进群
// 3.创建人默认为群主,群主可转让,群主退出默认随机一个成员自动成为群主
// 4.只有群主可修改群公告,踢人
message CIMGroupCreateReq {
  // cmd id: 		0x501
  uint64 user_id = 1;
  string group_name = 2;              // 群名,不指定则由服务端生成
  repeated uint64 member_id_list = 3; // 群成员列表
}

// 群组创建响应
message CIMGroupCreateRsp {
  // cmd id: 		0x502
  uint64 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;                      // 群组ID
  string 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; // 群头像
}

Löse die Gruppe auf

// 解散群请求
message CIMGroupDisbandingReq {
  // cmd id: 		0x503
  uint64 user_id = 1;
  uint64 group_id = 2;
}

message CIMGroupDisbandingRsp {
  // cmd id: 		0x504
  uint64 user_id = 1;
  uint64 group_id = 2;
  uint32 result_code = 3;
  bytes attach_notificatino_msg = 10; // 群解散系统通知,需要广播
}

Ausfallen

// 退出群
message CIMGroupExitReq {
  // cmd id: 		0x505
  uint64 user_id = 1;
  uint64 group_id = 2;
}

// 退出群
message CIMGroupExitRsp {
  // cmd id: 		0x506
  uint64 user_id = 1;
  uint64 group_id = 2;
  uint32 result_code = 3;
  bytes attach_notificatino_msg = 10; // 群成员退出群系统通知,需要广播
}

Abfragegruppenliste

// 查询群列表请求
message CIMGroupListReq {
  // cmd id: 		0x507
  uint64 user_id = 1;
}

// 查询群列表响应
message CIMGroupListRsp {
  // cmd id: 		0x508
  uint64 user_id = 1;
  repeated CIMGroupVersionInfo group_version_list = 2;
}

// 群版本信息
message CIMGroupVersionInfo {
  uint64 group_id = 1;
  uint32 group_version = 2;
}

Beachten Sie, dass hier die Versionsnummer der ID + -Gruppe zurückgegeben wird, was die zukünftige Erweiterung erleichtern kann. Bestimmte Gruppeninformationen müssen einmal abgefragt werden.

Gruppeninformationen

// 查询群信息请求
message CIMGroupInfoReq {
  // cmd id: 		0x509
  uint64 user_id = 1;
  repeated CIMGroupVersionInfo group_version_list = 2;
}

// 查询群信息响应
message CIMGroupInfoRsp {
  // cmd id: 		0x510
  uint64 user_id = 1;
  uint32 result_code = 2;
  repeated CIMGroupInfo group_info_list = 3;
}

Leute ziehen

// 邀请人入群请求
message CIMGroupInviteMemberReq {
  // cmd id: 		0x511
  uint64 user_id = 1;
  uint64 group_id = 2;
  repeated uint64 member_id_list = 3; // 成员ID列表
}

// 邀请人入群响应
message CIMGroupInviteMemberRsp {
  // cmd id: 		0x512
  uint64 user_id = 1;
  uint64 group_id = 2;
  uint32 result_code = 3;
  bytes attach_notificatino_msg = 10; // 入群系统通知,需要广播
}

Der Einfachheit halber gibt es hier keinen Überprüfungsmechanismus, aber die andere Partei wird direkt zur Gruppe hinzugefügt.

Leute treten

// 踢人请求
message CIMGroupKickOutMemberReq {
  // cmd id: 		0x513
  uint64 user_id = 1;
  uint64 group_id = 2;
  repeated uint64 member_id_list = 3; // 成员ID列表
}

// 踢人响应
message CIMGroupKickOutMemberRsp {
  // cmd id: 		0x514
  uint64 user_id = 1;
  uint64 group_id = 2;
  uint32 result_code = 3;
  bytes attach_notificatino_msg = 10; // 踢人系统通知,需要广播
}

bewirken

Nach der Implementierung zu aktualisieren.

Über den Autor

Empfehlen Sie Ihre eigene Open Source IM, geschrieben in reinem Golang:

CoffeeChat:
https://github.com/xmcy0011/CoffeeChat
opensource im mit Server (go) und Client (flattern + schnell)

Bezogen auf bekannte Projekte wie TeamTalk und Guazi IM, einschließlich Server- (go) und Client- (flattern + schnell), Single-Chat- und Roboter- (Micro, Turing, Sizhi) Chat-Funktionen wurden abgeschlossen, und Gruppen-Chat-Funktionen werden derzeit ausgeführt entwickelt, Willkommen Freunde Star, die an Golang und plattformübergreifender Entwicklung der Flattertechnologie interessiert sind, um mehr Aufmerksamkeit zu schenken.

————————————————
Copyright-Erklärung: Dieser Artikel ist der Originalartikel des CSDN-Bloggers "Xu Fei" und folgt der CC 4.0 BY-SA-Urheberrechtsvereinbarung. Bitte fügen Sie die Originalquelle bei Link und dies zum Nachdruck. Aussage.
Ursprünglicher Link: https://blog.csdn.net/xmcy001122/article/details/109451167

Ich denke du magst

Origin blog.csdn.net/xmcy001122/article/details/109451167
Empfohlen
Rangfolge