# ws_group_chat **Repository Path**: luodewen/ws_group_chat ## Basic Information - **Project Name**: ws_group_chat - **Description**: 一个基于局域网ws的聊天软件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebSocket 群聊应用 一个基于 Flutter 和 WebSocket 的实时群聊应用,支持多人在线聊天。 ## 功能特性 ### 🏠 主页面 - **创建房间**:作为主机创建聊天室,生成二维码供其他用户扫描加入 - **加入房间**:扫描二维码加入已存在的聊天室 ### 🎯 主机功能 - 启动 WebSocket 服务器 - 生成房间二维码 - 等待其他玩家加入 - 开始聊天室 - 实时消息广播 ### 📱 客户端功能 - 扫描二维码加入房间 - 等待主机开始聊天 - 实时接收和发送消息 - 显示在线人数 ### 💬 聊天功能 - 实时消息传输 - 显示发送者用户名 - 消息历史记录 - 多用户同时在线 ## 技术架构 ### 前端技术栈 - **Flutter** - 跨平台移动应用框架 - **Provider** - 状态管理 - **WebSocket** - 实时通信协议 - **QR Code** - 二维码生成和扫描 ### 后端技术栈 - **Dart Shelf** - Web 服务器框架 - **WebSocket Handler** - WebSocket 连接处理 - **HTTP Server** - 网络服务器 ### 核心组件 #### 数据模型 - `ChatModel` - 聊天消息模型 - `HostData` - 主机数据管理 - `ClientData` - 客户端数据管理 #### 页面结构 ``` lib/ ├── pages/ │ ├── home_page.dart # 主页面 │ ├── scan_page.dart # 二维码扫描页面 │ ├── host/ │ │ ├── host_wait_page.dart # 主机等待页面 │ │ └── host_chat_page.dart # 主机聊天页面 │ └── client/ │ ├── client_wait_page.dart # 客户端等待页面 │ └── client_chat_page.dart # 客户端聊天页面 ├── provider/ │ ├── host_data.dart # 主机数据提供者 │ └── client_data.dart # 客户端数据提供者 └── model/ └── chat_model.dart # 聊天消息模型 ``` ## 使用流程 ### 1. 创建房间(主机) 1. 点击"创建房间"按钮 2. 系统自动启动 WebSocket 服务器 3. 生成房间二维码 4. 等待其他用户扫描加入 5. 点击"开始游戏"进入聊天室 ### 2. 加入房间(客户端) 1. 点击"加入房间"按钮 2. 扫描主机生成的二维码 3. 自动连接到 WebSocket 服务器 4. 等待主机开始聊天 5. 进入聊天室开始聊天 ### 3. 聊天功能 - 实时发送和接收消息 - 显示发送者信息 - 支持多用户同时在线 - 消息历史记录 ## 网络配置 - **端口**:9423 - **协议**:WebSocket (ws://) - **网络**:局域网 WiFi 连接 - **IP 地址**:自动获取本机 WiFi IP ## 依赖包 ```yaml dependencies: flutter: sdk provider: ^6.1.1 web_socket_channel: ^2.4.0 shelf: ^1.4.1 shelf_web_socket: ^1.0.4 qr_flutter: ^4.1.0 mobile_scanner: ^3.5.7 permission_handler: ^11.2.0 network_info_plus: ^4.1.0 flutter_easyloading: ^3.0.5 ``` ## 运行要求 - Flutter SDK 3.0+ - Dart 3.0+ - Android/iOS 设备或模拟器 - 局域网 WiFi 环境 ## 安装运行 ```bash # 克隆项目 git clone cd ws_group_chat # 安装依赖 flutter pub get # 运行应用 flutter run ``` ## 注意事项 - 确保所有设备连接到同一 WiFi 网络 - 主机需要先创建房间,客户端才能加入 - 聊天功能需要主机点击"开始游戏"后激活 - 应用使用局域网通信,不支持跨网络连接 ## 开发特性 - 使用 `Selector` 优化性能,精确监听数据变化 - 异步 WebSocket 连接处理 - 错误处理和连接状态管理 - 响应式 UI 设计 - 跨平台兼容性