ChatPacket.proto 文档
本文档详细描述了即时通讯系统中使用的 ChatPacket.proto
文件,该文件基于 Protocol Buffers(protobuf)定义了通讯协议中的各类消息结构和命令类型。本文档不仅对原始的 .proto
文件进行了润色和格式优化,还根据前述通讯协议的内容修复了其中的错误,确保协议的一致性和完整性。
协议概述
ChatPacket.proto
文件定义了即时通讯系统中所有可能的消息类型及其结构。通过使用 Protocol Buffers,消息在客户端与服务器之间进行高效的序列化与反序列化,确保通讯的高效性与可靠性。
syntax = "proto3";
package com.litongjava.protobuf;
option java_outer_classname = "ChatPacketOuter";
// 命令类型枚举
enum CommandType {
COMMAND_ERROR = 0; // 错误信息
COMMAND_ACK = 1; // 确认消息
COMMAND_HANDSHAKE_REQ = 2; // 握手请求
COMMAND_HANDSHAKE_RESP = 3; // 握手响应
COMMAND_AUTH_REQ = 4; // 鉴权请求
COMMAND_AUTH_RESP = 5; // 鉴权响应
COMMAND_LOGIN_REQ = 6; // 登录请求
COMMAND_LOGIN_RESP = 7; // 登录响应
COMMAND_CHAT_REQ = 11; // 聊天消息请求
COMMAND_CHAT_RESP = 12; // 聊天消息响应
COMMAND_MESSAGE_READ_REQ = 13; // 已读请求
COMMAND_MESSAGE_READ_RESP = 14; // 已读响应
COMMAND_RECALL_MSG_REQ = 15; // 撤回消息请求
COMMAND_RECALL_MSG_RESP = 16; // 撤回消息响应
COMMAND_GET_USER_REQ = 17; // 获取用户信息请求
COMMAND_GET_USER_RESP = 18; // 获取用户信息响应
COMMAND_CREATE_GROUP_REQ = 19; // 创建群请求
COMMAND_CREATE_GROUP_RESP = 20; // 创建群响应
COMMAND_DISBAND_GROUP_REQ = 21; // 解散群请求
COMMAND_DISBAND_GROUP_RESP = 22; // 解散群响应
COMMAND_INVITE_TO_GROUP_REQ = 23;// 邀请加入群请求
COMMAND_INVITE_TO_GROUP_RESP = 24;// 邀请加入群响应
COMMAND_JOIN_GROUP_REQ = 25; // 加入群请求
COMMAND_JOIN_GROUP_RESP = 26; // 加入群响应
COMMAND_LEAVE_GROUP_REQ = 27; // 退出群请求
COMMAND_LEAVE_GROUP_RESP = 28; // 退出群响应
COMMAND_MUTE_GROUP_REQ = 29; // 屏蔽群请求
COMMAND_MUTE_GROUP_RESP = 30; // 屏蔽群响应
COMMAND_GROUP_MESSAGE_REQ = 31; // 群发消息请求
COMMAND_GROUP_MESSAGE_RESP = 32; // 群发消息响应
}
// 主消息结构
message ChatPacket {
CommandType cmd = 1; // 命令码,表示消息类型
int64 sequence = 2; // 消息序列号,用于消息的唯一标识和重发机制
int64 ack = 3; // 确认的消息序列号,可选
string from = 4; // 发送方ID
string to = 5; // 接收方ID
int64 timestamp = 6; // 消息创建时间,UTC时间戳
string token = 7; // 鉴权令牌,可选
string groupId = 8; // 群聊消息时使用的群ID,可选
oneof body {
HandshakeMessage handshakeMessage = 9; // 握手消息
AuthMessage authMessage = 10; // 鉴权消息
LoginMessage loginMessage = 11; // 登录请求消息
LoginResponse loginResponse = 12; // 登录响应消息
ChatMessage chatMessage = 13; // 聊天请求消息
ChatResponse chatResponse = 14; // 聊天响应消息
HeartbeatMessage heartbeatMessage = 15; // 心跳消息
CloseMessage closeMessage = 16; // 关闭、退出消息
GetUserMessage getUserMessage = 17; // 获取用户信息请求消息
GetUserResponse getUserResponse = 18; // 获取用户信息响应消息
// 群聊消息
CreateGroupMessage createGroupMessage = 19; // 创建群请求消息
CreateGroupResponse createGroupResponse = 20; // 创建群响应消息
DisbandGroupMessage disbandGroupMessage = 21; // 解散群请求消息
DisbandGroupResponse disbandGroupResponse = 22; // 解散群响应消息
InviteToGroupMessage inviteToGroupMessage = 23; // 邀请加入群请求消息
InviteToGroupResponse inviteToGroupResponse = 24; // 邀请加入群响应消息
JoinGroupMessage joinGroupMessage = 25; // 加入群请求消息
JoinGroupResponse joinGroupResponse = 26; // 加入群响应消息
LeaveGroupMessage leaveGroupMessage = 27; // 退出群请求消息
LeaveGroupResponse leaveGroupResponse = 28; // 退出群响应消息
MuteGroupMessage muteGroupMessage = 29; // 屏蔽群请求消息
MuteGroupResponse muteGroupResponse = 30; // 屏蔽群响应消息
GroupChatMessage groupChatMessage = 31; // 群发消息请求
GroupChatResponse groupChatResponse = 32; // 群发消息响应消息
}
}
// 握手消息
message HandshakeMessage {
bytes hbyte = 1; // 握手字节数据
}
// 鉴权消息
message AuthMessage {
string token = 1; // 鉴权令牌
}
// 登录请求消息
message LoginMessage {
string loginname = 1; // 登录名
string password = 2; // 密码
string token = 3; // 鉴权令牌
bool anonymous = 4; // 是否匿名登录,默认为false
}
// 登录响应消息
message LoginResponse {
int32 result = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
string userId = 3; // 用户ID,成功时返回
}
// 聊天请求消息
message ChatMessage {
string msgType = 1; // "text", "image", "audio", "video", "news", "markdown"
oneof content {
TextContent textContent = 2;
ImageContent imageContent = 3;
AudioContent audioContent = 4;
VideoContent videoContent = 5;
NewsContent newsContent = 6;
MarkdownContent markdownContent = 7;
}
}
// 文本消息内容
message TextContent {
string text = 1; // 文本内容
}
// 图片消息内容
message ImageContent {
string url = 1; // 图片URL
int32 width = 2; // 图片宽度
int32 height = 3; // 图片高度
string format = 4; // 图片格式,如 "png", "jpg"
}
// 音频消息内容
message AudioContent {
string url = 1; // 音频URL
int32 duration = 2; // 音频时长,单位秒
string format = 3; // 音频格式,如 "mp3"
}
// 视频消息内容
message VideoContent {
string url = 1; // 视频URL
int32 duration = 2; // 视频时长,单位秒
string thumbnail = 3; // 缩略图URL
string format = 4; // 视频格式,如 "mp4"
}
// 新闻消息内容
message NewsContent {
string title = 1; // 新闻标题
string description = 2; // 新闻描述
string url = 3; // 新闻链接
string image = 4; // 新闻图片URL
}
// Markdown消息内容
message MarkdownContent {
string markdown = 1; // Markdown格式的文本
}
// 聊天响应消息
message ChatResponse {
int32 status = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
string id = 3; // 服务器生成的唯一消息ID(雪花ID)
}
// 心跳消息
message HeartbeatMessage {
bytes hbbyte = 1; // 心跳字节数据
}
// 关闭、退出消息
message CloseMessage {
// 无额外字段
}
// 关闭响应消息
message CloseResponse {
int32 status = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
}
// 获取用户信息请求消息
message GetUserMessage {
string userId = 1; // type为0时必填
string groupId = 2; // type为1时必填
int32 type = 3; // 0: 获取好友信息, 1: 获取指定组信息, 2: 获取所有在线用户, 3: 获取所有用户
}
// 获取用户信息响应消息
message GetUserResponse {
repeated UserInfo users = 1; // 用户信息列表
}
// 用户信息结构
message UserInfo {
string userId = 1; // 用户ID
string username = 2; // 用户名
string nickname = 3; // 昵称
string avatar = 4; // 头像URL
int32 status = 5; // 用户状态,0: 离线, 1: 在线
// 可根据需求扩展更多字段
}
// 创建群请求消息
message CreateGroupMessage {
string groupName = 1; // 群名称
repeated string members = 2; // 初始成员列表(可选)
string description = 3; // 群描述
}
// 创建群响应消息
message CreateGroupResponse {
int32 result = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
string groupId = 3; // 新创建的群ID
}
// 解散群请求消息
message DisbandGroupMessage {
string groupId = 1; // 群ID
}
// 解散群响应消息
message DisbandGroupResponse {
int32 result = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
}
// 邀请加入群请求消息
message InviteToGroupMessage {
string groupId = 1; // 群ID
repeated string invitees = 2; // 被邀请者ID列表
}
// 邀请加入群响应消息
message InviteToGroupResponse {
int32 result = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
}
// 加入群请求消息
message JoinGroupMessage {
string groupId = 1; // 群ID
}
// 加入群响应消息
message JoinGroupResponse {
int32 result = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
}
// 退出群请求消息
message LeaveGroupMessage {
string groupId = 1; // 群ID
}
// 退出群响应消息
message LeaveGroupResponse {
int32 result = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
}
// 屏蔽群请求消息
message MuteGroupMessage {
string groupId = 1; // 群ID
bool mute = 2; // true: 屏蔽, false: 取消屏蔽
}
// 屏蔽群响应消息
message MuteGroupResponse {
int32 result = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
}
// 群发消息请求消息
message GroupChatMessage {
string msgType = 1; // "text", "image", "audio", "video", "news", "markdown"
oneof content {
TextContent textContent = 2;
ImageContent imageContent = 3;
AudioContent audioContent = 4;
VideoContent videoContent = 5;
NewsContent newsContent = 6;
MarkdownContent markdownContent = 7;
}
}
// 群发消息响应消息
message GroupChatResponse {
int32 status = 1; // 1: 成功, 其他: 错误代码
string message = 2; // 描述信息
}