feat: 添加聊天会话界面
- 新增 OpenClaw Gateway 连接器 (api/openclaw_connector.py)
- 新增聊天 WebSocket 路由 (api/chat.py)
- 新增聊天界面模板 (templates/chat/index.html)
- 新增聊天样式 (static/css/chat.css)
- 修改 app.py 支持 SocketIO
- 登录后默认跳转到聊天界面
作者:小白 🐶
This commit is contained in:
29
app.py
29
app.py
@@ -2,13 +2,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
OpenClaw Mission Control - Flask 版本
|
||||
支持登录、注册、控制中心功能
|
||||
支持登录、注册、控制中心、聊天功能
|
||||
作者:小白 🐶
|
||||
"""
|
||||
|
||||
from flask import Flask, render_template, redirect, url_for, request, flash, make_response
|
||||
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from flask_socketio import SocketIO
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
import os
|
||||
|
||||
@@ -18,6 +19,9 @@ app.config['SECRET_KEY'] = 'xiaobai-secret-key-2026'
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
|
||||
# 初始化 SocketIO
|
||||
socketio = SocketIO(app, cors_allowed_origins="*", async_mode='threading')
|
||||
|
||||
# 禁用缓存 - 解决浏览器缓存问题
|
||||
@app.after_request
|
||||
def add_no_cache_headers(response):
|
||||
@@ -40,6 +44,9 @@ login_manager.login_view = 'login'
|
||||
from api import api
|
||||
app.register_blueprint(api)
|
||||
|
||||
# 注册聊天 Socket Handlers
|
||||
from api.chat import register_socket_handlers, init_gateways
|
||||
|
||||
|
||||
# 用户模型
|
||||
class User(UserMixin, db.Model):
|
||||
@@ -63,10 +70,17 @@ def load_user(user_id):
|
||||
@app.route('/')
|
||||
def index():
|
||||
if current_user.is_authenticated:
|
||||
return redirect(url_for('dashboard'))
|
||||
return redirect(url_for('chat'))
|
||||
return render_template('index.html')
|
||||
|
||||
|
||||
# 路由 - 聊天界面
|
||||
@app.route('/chat')
|
||||
@login_required
|
||||
def chat():
|
||||
return render_template('chat/index.html', username=current_user.username)
|
||||
|
||||
|
||||
# 路由 - 控制中心仪表盘
|
||||
@app.route('/dashboard')
|
||||
@login_required
|
||||
@@ -166,4 +180,13 @@ with app.app_context():
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000, debug=False)
|
||||
# 注册 Socket.IO 事件处理器
|
||||
register_socket_handlers(socketio)
|
||||
|
||||
# 初始化 Gateway 连接
|
||||
init_gateways()
|
||||
|
||||
# 启动应用(使用 SocketIO)
|
||||
print("🚀 启动 OpenClaw Mission Control...")
|
||||
print("📍 访问地址: http://0.0.0.0:5000")
|
||||
socketio.run(app, host='0.0.0.0', port=5000, debug=False, allow_unsafe_werkzeug=True)
|
||||
|
||||
Reference in New Issue
Block a user