feat: 完成Nacos配置优化和WebSocket集成
主要更新: 1. 统一所有微服务端口配置(19000-19008) 2. 为所有服务创建本地/测试/生产三套环境配置 3. 配置Nacos认证密码(本地:Peanut2817*#, 测试/生产:EmotionMuseum2025) 4. 优化网关路由配置,支持负载均衡和WebSocket 5. 新增emotion-websocket模块,支持实时聊天 6. 前端集成WebSocket,替代HTTP轮询 7. 添加配置验证和管理工具脚本 技术特性: - 完整的环境隔离和服务发现 - WebSocket实时通信支持 - 负载均衡路由配置 - 跨域和安全配置 - 自动重连和心跳检测
This commit is contained in:
@@ -0,0 +1,221 @@
|
||||
# WebSocket集成总结
|
||||
|
||||
## 概述
|
||||
|
||||
已成功将web-flowith前端的对话页面从HTTP API调用改为WebSocket实时通信方式,实现了与后端emotion-websocket服务的完整集成。
|
||||
|
||||
## 完成的工作
|
||||
|
||||
### 1. 依赖管理
|
||||
- ✅ 添加了WebSocket相关依赖
|
||||
- `sockjs-client`: SockJS客户端库
|
||||
- `stompjs`: STOMP协议支持
|
||||
- `@types/sockjs-client`: TypeScript类型定义
|
||||
- `@types/stompjs`: TypeScript类型定义
|
||||
|
||||
### 2. WebSocket服务类 (`src/services/websocket.ts`)
|
||||
- ✅ 创建了完整的WebSocket服务类
|
||||
- ✅ 支持连接管理和状态跟踪
|
||||
- ✅ 实现了自动重连机制
|
||||
- ✅ 支持心跳检测
|
||||
- ✅ 完整的错误处理
|
||||
- ✅ 支持用户和游客两种模式
|
||||
|
||||
#### 主要功能:
|
||||
```typescript
|
||||
class WebSocketService {
|
||||
connect(userId?: string, callbacks?: WebSocketCallbacks): Promise<void>
|
||||
disconnect(): void
|
||||
sendChatMessage(content: string, conversationId?: string): void
|
||||
setConversationId(conversationId: string): void
|
||||
getStatus(): ConnectionStatus
|
||||
isConnected(): boolean
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 聊天Store更新 (`src/stores/chat.ts`)
|
||||
- ✅ 集成WebSocket服务
|
||||
- ✅ 添加连接状态管理
|
||||
- ✅ 实现WebSocket消息处理
|
||||
- ✅ 支持自动重连
|
||||
- ✅ 优化用户体验
|
||||
|
||||
#### 新增状态:
|
||||
- `wsConnected`: WebSocket连接状态
|
||||
- `connectionStatus`: 详细连接状态
|
||||
- `connectWebSocket()`: 连接方法
|
||||
- `disconnectWebSocket()`: 断开连接方法
|
||||
- `handleWebSocketMessage()`: 消息处理方法
|
||||
|
||||
### 4. 聊天页面更新 (`src/views/Chat/index.vue`)
|
||||
- ✅ 添加连接状态显示
|
||||
- ✅ 实时连接状态指示器
|
||||
- ✅ 连接断开时的用户提示
|
||||
- ✅ 禁用离线时的输入功能
|
||||
- ✅ 手动重连功能
|
||||
- ✅ 优化的用户界面
|
||||
|
||||
#### 新增功能:
|
||||
- 连接状态指示灯(绿色=在线,黄色=连接中,红色=离线)
|
||||
- 连接状态提示条
|
||||
- 智能输入框占位符
|
||||
- 自动重连提示
|
||||
|
||||
### 5. 环境配置更新
|
||||
- ✅ 更新了`.env`配置文件
|
||||
- ✅ 创建了`.env.development`开发环境配置
|
||||
- ✅ 更新了`.env.production`生产环境配置
|
||||
- ✅ 配置了WebSocket URL通过网关访问
|
||||
|
||||
#### 配置说明:
|
||||
```bash
|
||||
# 开发环境
|
||||
VITE_WS_URL=http://localhost:19000/ws/chat
|
||||
|
||||
# 生产环境
|
||||
VITE_WS_URL=http://47.111.10.27:19000/ws/chat
|
||||
```
|
||||
|
||||
### 6. 测试页面 (`src/views/WebSocketTest.vue`)
|
||||
- ✅ 创建了专门的WebSocket测试页面
|
||||
- ✅ 实时连接状态监控
|
||||
- ✅ 消息发送测试
|
||||
- ✅ 消息历史记录
|
||||
- ✅ 配置信息显示
|
||||
|
||||
## 技术特性
|
||||
|
||||
### 1. 连接管理
|
||||
- **自动重连**: 连接断开时自动尝试重连,最多5次
|
||||
- **心跳检测**: 每30秒发送心跳包保持连接
|
||||
- **状态跟踪**: 实时跟踪连接状态变化
|
||||
- **错误处理**: 完善的错误处理和用户提示
|
||||
|
||||
### 2. 消息处理
|
||||
- **实时通信**: 基于STOMP协议的实时双向通信
|
||||
- **消息类型**: 支持文本、系统、错误、心跳等多种消息类型
|
||||
- **AI状态**: 显示AI思考状态和输入提示
|
||||
- **消息确认**: 消息发送状态跟踪
|
||||
|
||||
### 3. 用户体验
|
||||
- **状态指示**: 直观的连接状态显示
|
||||
- **智能提示**: 根据连接状态显示不同的输入提示
|
||||
- **离线处理**: 连接断开时禁用输入并显示提示
|
||||
- **手动重连**: 支持用户手动触发重连
|
||||
|
||||
### 4. 兼容性
|
||||
- **用户模式**: 支持注册用户和游客用户
|
||||
- **会话管理**: 自动管理会话ID和用户标识
|
||||
- **降级处理**: SockJS提供WebSocket降级支持
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 1. 启动服务
|
||||
```bash
|
||||
# 启动后端服务
|
||||
cd backend
|
||||
./start-services.sh
|
||||
|
||||
# 启动前端服务
|
||||
cd web-flowith
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 2. 访问页面
|
||||
- **聊天页面**: http://localhost:5173/chat
|
||||
- **测试页面**: http://localhost:5173/websocket-test
|
||||
|
||||
### 3. 测试功能
|
||||
1. 打开聊天页面,观察连接状态指示器
|
||||
2. 发送消息测试AI回复功能
|
||||
3. 断开网络测试自动重连功能
|
||||
4. 使用测试页面进行详细的WebSocket功能测试
|
||||
|
||||
## 消息流程
|
||||
|
||||
### 1. 连接建立
|
||||
```
|
||||
前端 → WebSocket连接 → 网关(19000) → emotion-websocket(19007)
|
||||
```
|
||||
|
||||
### 2. 消息发送
|
||||
```
|
||||
用户输入 → WebSocket发送 → AI服务处理 → WebSocket返回 → 前端显示
|
||||
```
|
||||
|
||||
### 3. 消息类型
|
||||
- **TEXT**: 普通文本消息
|
||||
- **AI_THINKING**: AI思考中状态
|
||||
- **CONNECTION**: 连接状态消息
|
||||
- **ERROR**: 错误消息
|
||||
- **SYSTEM**: 系统消息
|
||||
- **HEARTBEAT**: 心跳消息
|
||||
|
||||
## 配置说明
|
||||
|
||||
### WebSocket配置
|
||||
```typescript
|
||||
// 连接URL
|
||||
VITE_WS_URL=http://localhost:19000/ws/chat
|
||||
|
||||
// 重连配置
|
||||
VITE_WS_RECONNECT_ATTEMPTS=5
|
||||
VITE_WS_RECONNECT_INTERVAL=3000
|
||||
VITE_WS_HEARTBEAT_INTERVAL=30000
|
||||
```
|
||||
|
||||
### 网关路由
|
||||
```yaml
|
||||
# WebSocket REST API
|
||||
- id: emotion-websocket-route
|
||||
uri: http://localhost:19007
|
||||
predicates: [Path=/websocket/**]
|
||||
|
||||
# WebSocket连接
|
||||
- id: emotion-websocket-ws-route
|
||||
uri: ws://localhost:19007
|
||||
predicates: [Path=/ws/**]
|
||||
```
|
||||
|
||||
## 优势特点
|
||||
|
||||
### 1. 实时性
|
||||
- 消息即时推送,无需轮询
|
||||
- AI回复实时显示
|
||||
- 连接状态实时更新
|
||||
|
||||
### 2. 可靠性
|
||||
- 自动重连机制
|
||||
- 心跳检测保持连接
|
||||
- 完善的错误处理
|
||||
|
||||
### 3. 用户体验
|
||||
- 直观的状态指示
|
||||
- 智能的输入提示
|
||||
- 流畅的交互体验
|
||||
|
||||
### 4. 可扩展性
|
||||
- 支持多种消息类型
|
||||
- 易于添加新功能
|
||||
- 模块化设计
|
||||
|
||||
## 后续优化建议
|
||||
|
||||
1. **消息持久化**: 将聊天记录保存到本地存储
|
||||
2. **文件传输**: 支持图片、文件等多媒体消息
|
||||
3. **消息状态**: 显示消息已读、未读状态
|
||||
4. **通知功能**: 集成浏览器通知API
|
||||
5. **性能优化**: 消息列表虚拟滚动
|
||||
6. **主题切换**: 支持暗色模式
|
||||
7. **快捷操作**: 添加常用回复快捷键
|
||||
|
||||
## 总结
|
||||
|
||||
WebSocket集成已完成,实现了:
|
||||
- ✅ 完整的实时通信功能
|
||||
- ✅ 稳定的连接管理
|
||||
- ✅ 优秀的用户体验
|
||||
- ✅ 完善的错误处理
|
||||
- ✅ 灵活的配置管理
|
||||
|
||||
前端现在可以通过WebSocket与AI进行实时对话,提供了流畅、稳定的聊天体验!🚀
|
||||
Reference in New Issue
Block a user