Files
chat/backend/app/websocket/events.py
T
2026-06-12 23:14:12 +08:00

59 lines
1.4 KiB
Python

"""WebSocket 事件类型定义"""
from enum import Enum
from pydantic import BaseModel
from datetime import datetime
class EventType(str, Enum):
# 客户端 -> 服务端
CHAT_SEND = "chat.send"
CHAT_TYPING = "chat.typing"
CHAT_READ = "chat.read"
PRESENCE_UPDATE = "presence.update"
# 服务端 -> 客户端
CHAT_MESSAGE = "chat.message"
CHAT_TYPING_INDICATOR = "chat.typing"
CHAT_READ_RECEIPT = "chat.read"
CHAT_MESSAGE_DELETED = "chat.message_deleted"
CONVERSATION_UPDATED = "conversation.updated"
CONVERSATION_MEMBER_ADDED = "conversation.member_added"
CONVERSATION_MEMBER_REMOVED = "conversation.member_removed"
FRIEND_REQUEST = "friend.request"
FRIEND_ACCEPTED = "friend.accepted"
PRESENCE_ONLINE = "presence.online"
PRESENCE_OFFLINE = "presence.offline"
ERROR = "error"
class WSEvent(BaseModel):
"""WebSocket 事件信封"""
type: str
data: dict
timestamp: str | None = None
class ChatSendData(BaseModel):
"""发送消息数据"""
conversation_id: str
content: str
type: str = "text"
reply_to_id: str | None = None
class ChatTypingData(BaseModel):
"""输入中数据"""
conversation_id: str
class ChatReadData(BaseModel):
"""已读数据"""
conversation_id: str
message_id: str
class PresenceUpdateData(BaseModel):
"""在线状态更新"""
status: str # online / offline / away