feat: Step 4 - 聊天 WebSocket 事件 (v0.9.3)
- 创建 chat_handlers.py 聊天事件处理器 - 实现 6 个 C→S 事件: - chat.send.create - 创建聊天会话 - chat.send.join - 加入会话 - chat.send.leave - 离开会话 - chat.send.message - 发送消息 - chat.send.typing - 正在输入 - chat.send.read - 消息已读 - 实现 7 个 S→C 事件: - chat.created - 会话已创建 - chat.joined - 已加入会话 - chat.left - 已离开会话 - chat.message - 收到消息 - chat.typing - 对方正在输入 - chat.read - 消息已读确认 - chat.closed - 会话被关闭 - 创建 ChatConnectionManager 管理连接 - 注册聊天事件处理器 - 更新版本号到 0.9.3
This commit is contained in:
@@ -20,6 +20,7 @@ connection_manager = ConnectionManager()
|
||||
def register_handlers(socketio):
|
||||
"""注册 Socket.IO 事件处理器"""
|
||||
|
||||
# ==================== 连接事件 ====================
|
||||
@socketio.on('connect')
|
||||
def handle_connect():
|
||||
"""客户端连接"""
|
||||
@@ -38,10 +39,13 @@ def register_handlers(socketio):
|
||||
if sid in connection_manager.socket_sessions:
|
||||
del connection_manager.socket_sessions[sid]
|
||||
|
||||
# ==================== 认证事件 ====================
|
||||
@socketio.on('auth')
|
||||
def handle_auth(data):
|
||||
"""处理认证"""
|
||||
from flask import request
|
||||
from app.models import User
|
||||
|
||||
sid = request.sid
|
||||
|
||||
token = data.get('token')
|
||||
@@ -71,11 +75,13 @@ def register_handlers(socketio):
|
||||
except Exception as e:
|
||||
emit('auth_error', {'code': 'INVALID_TOKEN', 'message': str(e)})
|
||||
|
||||
# ==================== 心跳事件 ====================
|
||||
@socketio.on('ping')
|
||||
def handle_ping(data):
|
||||
"""心跳响应"""
|
||||
emit('pong', {'timestamp': datetime.utcnow().timestamp()})
|
||||
|
||||
# ==================== 会话事件 ====================
|
||||
@socketio.on('session.create')
|
||||
def handle_session_create(data):
|
||||
"""创建会话"""
|
||||
@@ -124,6 +130,7 @@ def register_handlers(socketio):
|
||||
'participants': [session.user_id, session.primary_agent_id]
|
||||
})
|
||||
|
||||
# ==================== 消息事件 ====================
|
||||
@socketio.on('message.send')
|
||||
def handle_message_send(data):
|
||||
"""发送消息"""
|
||||
@@ -180,3 +187,7 @@ def register_handlers(socketio):
|
||||
db.session.commit()
|
||||
|
||||
emit('message.acked', {'message_id': message_id, 'status': status})
|
||||
|
||||
# ==================== 聊天事件 (Step 4) ====================
|
||||
from app.socketio.chat_handlers import register_chat_handlers
|
||||
register_chat_handlers(socketio)
|
||||
|
||||
Reference in New Issue
Block a user