35 lines
1.5 KiB
Go
35 lines
1.5 KiB
Go
package model
|
||
|
||
// MessageType 消息的大类:发到哪里
|
||
type MessageType string
|
||
|
||
const (
|
||
TypeWorld MessageType = "world" // 世界频道
|
||
TypeRoom MessageType = "room" // 房间
|
||
TypePrivate MessageType = "private" // 私聊
|
||
TypeSystem MessageType = "system" // 系统消息(如通知、提示等)
|
||
)
|
||
|
||
// MessageAction 消息的动作:干什么事
|
||
type MessageAction string
|
||
|
||
const (
|
||
ActionSend MessageAction = "send" // 发送聊天消息
|
||
ActionJoinRoom MessageAction = "join_room" // 加入房间
|
||
ActionLeaveRoom MessageAction = "leave_room" // 离开房间
|
||
ActionCreateRoom MessageAction = "create_room" // 创建房间(也可以走 HTTP)
|
||
)
|
||
|
||
// ChatMessage WebSocket 收/发的统一结构
|
||
// 前端和后端都按这个结构来编码/解码 JSON。
|
||
type ChatMessage struct {
|
||
Type MessageType `json:"type"` // 消息类型:world/room/private/system
|
||
Action MessageAction `json:"action"` // 动作:send/join_room/leave_room...
|
||
FromUserId uint64 `json:"fromUserId,omitempty"` // 发送者用户ID
|
||
FromNickname string `json:"fromNickname,omitempty"` // 发送者昵称
|
||
RoomId string `json:"roomId,omitempty"` // 房间ID(房间消息时使用)
|
||
ToUserId uint64 `json:"toUserId,omitempty"` // 目标用户ID(私聊时使用)
|
||
Content string `json:"content,omitempty"` // 文本内容
|
||
Time string `json:"time,omitempty"` // 时间(ISO字符串,前期用 string 即可)
|
||
}
|