# 聊天室 **Repository Path**: chaoxinghou/chat-room ## Basic Information - **Project Name**: 聊天室 - **Description**: 利用Trae SOLO模式 一站式生成前后端项目。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-07 - **Last Updated**: 2025-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 聊天软件技术架构文档 ## 1. Architecture design ```mermaid graph TD A[用户浏览器] --> B[前端应用 HTML+JS+CSS] B --> C[WebSocket连接] C --> D[SpringBoot后端服务] D --> E[内存数据存储] D --> F[WebSocket会话管理] subgraph "前端层" B end subgraph "后端层" D E F end ``` ## 2. Technology Description * 前端:HTML5 + JavaScript (ES6+) + CSS3 * 后端:Java 8+ + Spring Boot 2.7+ + Spring WebSocket * 数据存储:内存存储(HashMap)用于用户会话和消息缓存 * 通信协议:WebSocket用于实时双向通信 ## 3. Route definitions | Route | Purpose | | ----- | ----------------- | | / | 登录页面,用户输入用户名进入聊天室 | | /chat | 聊天主界面,显示消息和在线用户列表 | ## 4. API definitions ### 4.1 WebSocket API **WebSocket连接端点** ``` ws://localhost:8080/chat ``` **消息类型定义** 用户加入聊天室 ```json { "type": "JOIN", "username": "用户名", "timestamp": "2024-01-01T10:00:00Z" } ``` 发送聊天消息 ```json { "type": "CHAT", "username": "用户名", "message": "消息内容", "timestamp": "2024-01-01T10:00:00Z" } ``` 用户离开聊天室 ```json { "type": "LEAVE", "username": "用户名", "timestamp": "2024-01-01T10:00:00Z" } ``` 在线用户列表更新 ```json { "type": "USER_LIST", "users": ["用户1", "用户2", "用户3"], "timestamp": "2024-01-01T10:00:00Z" } ``` ### 4.2 HTTP API 静态资源服务 ``` GET / ``` 返回登录页面HTML ``` GET /chat ``` 返回聊天界面HTML ``` GET /static/** ``` 返回CSS和JavaScript静态文件 ## 5. Server architecture diagram ```mermaid graph TD A[WebSocket Controller] --> B[Chat Service] B --> C[User Session Manager] B --> D[Message Handler] C --> E[在线用户存储] D --> F[消息广播] subgraph "控制层" A end subgraph "服务层" B C D end subgraph "数据层" E end ``` ## 6. Data model ### 6.1 Data model definition ```mermaid erDiagram USER_SESSION { string sessionId PK string username datetime joinTime string status } CHAT_MESSAGE { string messageId PK string username string content datetime timestamp string type } ``` ### 6.2 Data Definition Language **用户会话数据结构(内存存储)** ```java // UserSession.java public class UserSession { private String sessionId; private String username; private LocalDateTime joinTime; private WebSocketSession webSocketSession; // 构造函数、getter、setter方法 } ``` **聊天消息数据结构** ```java // ChatMessage.java public class ChatMessage { private String type; // JOIN, CHAT, LEAVE, USER_LIST private String username; private String message; private LocalDateTime timestamp; private List users; // 用于USER_LIST类型 // 构造函数、getter、setter方法 } ``` **内存数据存储管理** ```java // 在ChatService中使用 private final Map activeSessions = new ConcurrentHashMap<>(); private final List messageHistory = new ArrayList<>(); ``` **核心服务类结构** ```java // WebSocket配置 @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new ChatWebSocketHandler(), "/chat") .setAllowedOrigins("*"); } } // WebSocket处理器 @Component public class ChatWebSocketHandler extends TextWebSocketHandler { // 处理连接建立、消息接收、连接关闭等事件 } // 聊天服务 @Service public class ChatService { // 用户加入、离开、消息广播等业务逻辑 } ```