# lan-chat-system **Repository Path**: xmosai/lan-chat-system ## Basic Information - **Project Name**: lan-chat-system - **Description**: 局域网通信系统 - 支持实时消息、文件传输、图片分享的局域网聊天应用 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-02-22 - **Last Updated**: 2026-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 局域网通信系统 (LAN Chat System) 一个基于 Node.js + Flutter 的局域网实时通信系统,支持文字消息、文件传输、图片分享、Emoji表情包、用户管理、超级管理员等功能。 --- ## 📥 快速下载 ### 最新版本: v1.2.0 [![下载APK](https://img.shields.io/badge/Download-v1.2.0-brightgreen.svg?style=for-the-badge&logo=android)](https://gitee.com/xmosai/lan-chat-system/releases/download/v1.2.0/lan_communication_app-v1.2.0-release.apk) 👉 [**点击这里下载最新的APK安装包**](https://gitee.com/xmosai/lan-chat-system/releases/download/v1.2.0/lan_communication_app-v1.2.0-release.apk) 查看所有发布版本: [Releases页面](https://gitee.com/xmosai/lan-chat-system/releases) --- ## 📷 功能演示 ### Web端界面 ![Web端界面](screenshots/web.jpg) ### 移动端界面 移动端界面 --- ## 版本演进 ### v1.0 (基础版) - 基于IP地址识别用户 - 系统自动分配用户名 - 基础的文字消息和文件传输功能 ### v1.2.0 (全新升级版) - 用户账号注册/登录系统 - 完善的用户管理功能 - 超级管理员权限系统 - 全新的Web端UI设计 - 优化的移动端体验 ## 功能特性 ### 核心功能 - 实时消息通信 - 文件传输(支持所有文件类型) - 图片预览和下载 - 自动服务器发现 - 用户头像系统(服务器统一管理) - 在线用户显示 - 全新微信风格UI设计 ### 用户管理系统 - 用户账号注册/登录 - 用户账号密码验证 - 个人信息管理(昵称、头像) - 用户状态管理(在线/离线) ### 超级管理员功能 - 超级管理员专用账号(ADMIN)登录验证 - 查看所有用户列表(在线/离线) - 删除用户功能 - 清除所有聊天记录 - 清除所有上传文件 - 超级管理员功能面板 ### v1.2.0 新增特性 - Emoji表情包选择器 - 用户修改昵称功能 - 智能时间显示(当天/昨天/本周/更早) - 消息和文件按时间正确排序 - 全新Web端UI设计,更美观易用 ## 系统架构 ``` ┌─────────────────────────────────────────────────────────┐ │ 局域网通信系统 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ │ │ PC Web │ │ Server │ │ Mobile │ │ │ │ Browser │◄───►│ (Node.js) │◄───►│ (APK) │ │ │ └─────────────┘ └─────────────┘ └───────────┘ │ │ │ │ │ │ │ └──────────────────┼──────────────────┘ │ │ WiFi │ └─────────────────────────────────────────────────────────┘ ``` ## 目录结构 ``` lan-chat-system/ ├── server/ # 服务器端 │ ├── server.js # 主服务器文件 │ ├── package.json # Node.js 依赖 │ ├── public/ # Web 前端文件 │ │ ├── index.html │ │ ├── css/ │ │ └── js/ │ └── xo/ # 头像资源 │ ├── mobile-app/ # 移动端应用 │ ├── lib/ # Flutter 源码 │ │ ├── main.dart │ │ ├── models/ │ │ ├── screens/ │ │ ├── services/ │ │ ├── theme/ │ │ └── widgets/ │ ├── android/ # Android 配置 │ └── pubspec.yaml # Flutter 依赖 │ └── README.md ``` ## 获取源码 ### 克隆完整仓库(推荐) ```bash git clone https://gitee.com/xmosai/lan-chat-system.git cd lan-chat-system ``` ### 仅克隆服务端(如果不需要移动端) 如果你只需要部署服务端,可以只下载server文件夹: 1. 访问 https://gitee.com/xmosai/lan-chat-system 2. 下载仓库zip包 3. 解压后只保留server文件夹 --- ## 快速开始 ### 服务器部署 #### 🚀 方式一:快速部署(推荐) **跨平台脚本,支持 Windows / Linux / macOS** **Windows用户:** ```bash # 双击运行 start.bat # 或使用npm npm run deploy ``` **Linux / macOS用户:** ```bash # 运行shell脚本 chmod +x start.sh ./start.sh # 或使用npm npm run deploy ``` **所有平台通用(使用Node.js):** ```bash node deploy.js ``` 快速部署脚本提供以下功能: - ✅ 检查服务端文件完整性 - ✅ 检查 Node.js 环境 - ✅ 自动安装依赖 - ✅ 初始化数据库 - ✅ 前台启动服务器 - ✅ 后台启动服务器(SSH断开后继续运行) - ✅ 停止后台服务器 - ✅ 查看服务器状态 --- ### 🖥️ 后台运行(SSH断开后继续运行) 如果你需要在SSH断开后让服务器继续运行,可以使用后台启动功能。系统会优先使用 `screen` 命令(推荐),如果没有安装则回退到 `nohup`。 #### 安装screen(推荐) **Debian/Ubuntu:** ```bash sudo apt-get install screen ``` **CentOS/RHEL:** ```bash sudo yum install screen ``` **macOS:** ```bash brew install screen ``` #### Linux / macOS 用户: **方式一:使用独立脚本(最简单)** ```bash # 后台启动(优先使用screen) chmod +x start-background.sh ./start-background.sh # 查看状态 chmod +x status.sh ./status.sh # 查看日志 tail -f server.log # 停止服务器 chmod +x stop.sh ./stop.sh ``` **方式二:使用 deploy.js 交互式菜单** ```bash node deploy.js # 选择 "2. 完整部署(检查+安装+后台启动)" 或 "5. 仅后台启动服务器" ``` **方式三:直接使用screen命令** ```bash # 进入server目录 cd server # 创建新的screen会话并启动服务器 screen -S lan-chat-server # 在screen会话中启动服务器 npm start # 按 Ctrl+A 再按 D 分离会话(让服务器在后台运行) # 重新附加到会话(查看服务器输出) screen -r lan-chat-server # 查看所有screen会话 screen -list # 停止screen会话 screen -S lan-chat-server -X quit ``` #### Windows 用户: ```bash node deploy.js # 选择 "2. 完整部署(检查+安装+后台启动)" 或 "5. 仅后台启动服务器" ``` #### 常用命令(Linux/macOS): | 命令 | 说明 | |------|------| | `./start-background.sh` | 后台启动服务器 | | `./stop.sh` | 停止后台服务器 | | `./status.sh` | 查看服务器状态 | | `tail -f server.log` | 实时查看日志 | | `cat server.log` | 查看完整日志 | | `screen -r lan-chat-server` | 附加到screen会话 | | `screen -list` | 列出所有screen会话 | | `screen -S lan-chat-server -X quit` | 停止screen会话 | --- #### 🔧 方式二:手动部署 1. 安装 Node.js (v16+) 2. 进入服务器目录并安装依赖: ```bash cd server npm install ``` 3. 启动服务器: ```bash npm start ``` 或者直接运行: ```bash node server.js ``` 服务器将在 `http://localhost:3000` 启动,并自动打开浏览器。 ### 移动端使用 #### 📱 快速安装 **👉 [点击这里下载 v1.2.0 APK](https://gitee.com/xmosai/lan-chat-system/releases/download/v1.2.0/lan_communication_app-v1.2.0-release.apk)** 1. 从 [Releases页面](https://gitee.com/xmosai/lan-chat-system/releases) 下载最新的 APK 文件 2. 安装到 Android 手机 3. 确保手机和服务器在同一局域网 4. 打开 APP,自动扫描并连接服务器 ### 从源码构建移动端 1. 安装 Flutter SDK 2. 进入移动端目录: ```bash cd mobile-app ``` 3. 安装依赖: ```bash flutter pub get ``` 4. 构建 APK: ```bash flutter build apk --release ``` ## 技术栈 ### 服务器端 - Node.js - Express - Socket.io - Multer (文件上传) ### 移动端 - Flutter - Socket.io Client - Provider (状态管理) - Cached Network Image - Flutter Animate ### Web 前端 - HTML5 / CSS3 - JavaScript - Socket.io Client ## 配置说明 ### 服务器配置 服务器默认运行在 3000 端口,如需修改请编辑 `server.js`: ```javascript const port = 3000; // 修改为所需端口 ``` ### 移动端配置 移动端会自动扫描局域网内的服务器,也支持手动输入 IP 地址连接。 ## 功能说明 ### 用户注册与登录 - 首次使用需注册账号 - 支持账号密码登录 - 密码加密存储 - 登录状态持久化 ### 消息发送 - 支持文本消息实时发送 - 消息带有时间戳和发送者信息 - 支持Emoji表情包 - 智能时间显示 ### 文件传输 - 支持任意类型文件上传 - 图片支持在线预览 - 文件自动保存到服务器 `uploads` 目录 - 文件按时间正确排序显示 ### 头像系统 - 服务器统一分配和管理头像 - 所有客户端显示一致的头像 - 支持用户更换头像 ### 个人信息管理 - 用户可修改自己的昵称 - 用户可更换自己的头像 - 个人设置界面 ### 用户管理 - 基于账号系统识别用户 - 显示在线用户列表 - 显示离线用户列表 - 用户状态实时更新 ### 超级管理员功能 - 使用 ADMIN 账号登录即可获得超级管理员权限 - 查看完整用户列表 - 删除违规用户 - 清除所有聊天记录 - 清除所有上传文件 - 专用管理员功能面板 ## 注意事项 1. 确保服务器和客户端在同一局域网 2. 防火墙需开放 3000 端口 3. Android 需要授予存储和网络权限 ## 许可证 MIT License ## 作者 夏木 (XiaMu)