init
This commit is contained in:
33
cmd/internal/protocol/message.go
Normal file
33
cmd/internal/protocol/message.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package protocol
|
||||
|
||||
// MessageType 表示一条消息的传输类型。
|
||||
// v1 只区分普通文本和文件两类负载。
|
||||
type MessageType string
|
||||
|
||||
const (
|
||||
// MessageTypeText 表示正文按 UTF-8 文本解释,天然兼容 ASCII。
|
||||
MessageTypeText MessageType = "text"
|
||||
// MessageTypeFile 表示正文是原始文件字节。
|
||||
MessageTypeFile MessageType = "file"
|
||||
// MessageTypeRegister 表示 peer 向 server 显式注册自己的身份。
|
||||
MessageTypeRegister MessageType = "register"
|
||||
// MessageTypeError 表示 server 向 peer 返回错误信息。
|
||||
MessageTypeError MessageType = "error"
|
||||
)
|
||||
|
||||
// ServerPeerID 是协议中约定的 server 端固定标识。
|
||||
const ServerPeerID = "server"
|
||||
|
||||
// Message 是 peer 和 server 共用的传输消息结构。
|
||||
// 头部元信息会被编码为 JSON,Body 则作为原始字节拼接在头部之后。
|
||||
type Message struct {
|
||||
Type MessageType `json:"type"` // 消息类型,只允许 text 或 file。
|
||||
ID uint64 `json:"id"` // 由发送方生成,用于追踪消息。
|
||||
From string `json:"from"` // 发送方标识。
|
||||
To string `json:"to"` // 接收方标识。
|
||||
|
||||
// FileName 仅在 Type 为 file 时使用。
|
||||
FileName string `json:"file_name,omitempty"`
|
||||
// Body 是真正传输的正文内容,不进入头部 JSON。
|
||||
Body []byte `json:"-"`
|
||||
}
|
||||
Reference in New Issue
Block a user