AI开发 FCChat - 全功能实时聊天系统 已上线

FCChat - 全功能实时聊天系统-演示站fcchat.xyz

augment不断片不脑残不失忆无限免费额度开发聊天应用

🚀 项目概述

FCChat 是一个功能完整的实时聊天系统,采用 Node.js + Socket.IO + MySQL 架构,支持多种聊天模式、文件传输、API登录集成等高级功能。

✨ 核心功能亮点

🔐 多重认证系统

  • API登录集成:支持外部API服务器认证 (https://fengchevip.online)
  • 会话同步登录:支持跨设备会话同步
  • 本地登录备用:API不可用时自动回退到本地认证
  • 管理员权限控制:分级权限管理,管理员全局控制
  • 记住登录凭据:可选择记住用户名密码

💬 多模式聊天

  • 实名用户聊天:注册用户间的标准聊天
  • 匿名聊天:临时聊天模式,支持链接分享
  • 好友系统:添加/删除好友,好友列表管理
  • 群组概念:支持多人聊天场景

📁 文件传输系统

  • 拖拽上传:支持文件拖拽到聊天窗口
  • 多格式支持:无限制文件格式和大小
  • 临时存储:服务器端临时文件存储
  • 下载功能:接收方可直接下载文件

🤖 智能自动回复

  • HTML内容支持:富文本自动回复消息
  • 匿名用户支持:对匿名用户也能自动回复
  • 一次性投递:每个发送者只回复一次
  • 离线用户支持:离线时也能触发自动回复

📱 实时状态同步

  • 在线状态:实时显示用户在线/离线状态
  • 消息状态:已读/未读状态指示器
  • 多设备同步:同用户多窗口实时同步
  • 连接状态:持久连接架构,类似WhatsApp

🎨 界面定制

  • Hacker风格UI:黑客主题界面设计
  • 数字雨背景:匿名聊天页面特效
  • 响应式设计:适配移动设备和主流浏览器
  • 主题定制:可自定义背景色、文字颜色

🔔 通知系统

  • 声音通知:收到消息时播放提示音
  • 桌面通知:浏览器原生通知支持
  • 弹窗提醒:主窗口右上角消息提醒
  • 未读消息指示:侧边栏未读消息计数

📊 管理员功能

  • 全局API控制:管理员可全局启用/禁用API登录
  • 系统配置管理:服务器端配置存储
  • 用户权限管理:分级权限控制
  • 操作审计日志:记录所有管理员操作

🏗️ 技术架构

后端技术栈

  • Node.js: 服务器运行环境
  • Express.js: Web框架
  • Socket.IO: 实时通信
  • MySQL: 数据库存储
  • JWT: 用户认证
  • Multer: 文件上传处理

前端技术栈

  • 原生JavaScript: 核心逻辑
  • Socket.IO Client: 实时通信客户端
  • HTML5/CSS3: 界面构建
  • 响应式设计: 移动端适配

数据库设计

  • users: 用户信息表
  • offline_messages: 离线消息表
  • chat_history: 聊天历史表
  • anonymous_chats: 匿名聊天表
  • system_config: 系统配置表

🔧 配置说明

数据库配置

const DB_CONFIG = {
    host: 'localhost',
    user: 'xx',
    password: 'xx',
    database: 'xx',
    charset: 'utf8mb4'
};

API登录配置

const API_CONFIG = {
    enabled: true, // 管理员可控制
    baseUrl: 'https://fengchevip.online',
    endpoints: {
        login: '/api/v1/auth/login',
        checkPending: '/api/v1/session/check-pending',
        syncSession: '/api/v1/session/sync',
        profile: '/api/v1/auth/profile'
    }
};

管理员用户配置

const ADMIN_USERS = ['admin', 'administrator', 'root'];

服务器配置

const SERVER_CONFIG = {
    port: 3001,
    host: '0.0.0.0',
    staticPath: '/www/wwwroot/fcchatold/client/dist'
};

📦 部署指南

环境要求

  • Node.js >= 14.0
  • MySQL >= 5.7
  • 操作系统: Linux/Windows
  • 内存: >= 512MB
  • 磁盘: >= 1GB

安装步骤

1. 克隆项目
git clone <repository-url>
cd fcchat
2. 安装依赖
# 服务器端依赖
cd server
npm install

# 如果有客户端依赖
cd ../client
npm install
3. 数据库配置
-- 创建数据库
CREATE DATABASE fcchat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户
CREATE USER 'fcchat'@'localhost' IDENTIFIED BY '123123';
GRANT ALL PRIVILEGES ON fcchat.* TO 'fcchat'@'localhost';
FLUSH PRIVILEGES;
4. 启动服务
# 开发环境
cd server/dist
node index.js

# 生产环境 (推荐使用PM2)
pm2 start index.js --name "fcchat"

生产环境部署

使用PM2管理进程
# 安装PM2
npm install -g pm2

# 启动应用
pm2 start server/dist/index.js --name fcchat

# 设置开机自启
pm2 startup
pm2 save
Nginx反向代理配置
server {
    listen 80;
    server_name your-domain.com;
    
    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
    
    # Socket.IO支持
    location /socket.io/ {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

🔒 安全配置

JWT密钥配置

const JWT_SECRET = 'your-super-secret-key-change-in-production';

CORS配置

app.use(cors({
    origin: ['http://localhost:3001', 'https://your-domain.com'],
    credentials: true
}));

文件上传安全

const upload = multer({
    dest: 'uploads/',
    limits: {
        fileSize: 100 * 1024 * 1024 // 100MB限制
    },
    fileFilter: (req, file, cb) => {
        // 文件类型验证
        cb(null, true);
    }
});

📈 性能优化

数据库优化

  • 添加适当的索引
  • 定期清理过期数据
  • 连接池配置优化

内存管理

  • 定期清理离线消息
  • 文件上传临时清理
  • Socket连接管理

缓存策略

  • 静态文件缓存
  • 用户状态缓存
  • 配置信息缓存

🐛 故障排除

常见问题

1. 数据库连接失败
# 检查MySQL服务状态
systemctl status mysql

# 检查用户权限
mysql -u fcchat -p123123 -e "SHOW GRANTS;"
2. Socket.IO连接问题
# 检查端口占用
netstat -tulpn | grep 3001

# 检查防火墙设置
ufw status
3. 文件上传失败
# 检查uploads目录权限
ls -la uploads/
chmod 755 uploads/

📞 技术支持

日志查看

# PM2日志
pm2 logs fcchat

# 系统日志
tail -f /var/log/nginx/error.log

监控命令

# 查看进程状态
pm2 status

# 查看资源使用
pm2 monit

# 重启应用
pm2 restart fcchat

🎯 功能详细说明

🔐 API登录系统详解

登录优先级策略
  1. API直接登录: 使用外部API服务器认证
  2. 会话同步登录: 检查待同步会话并同步
  3. 本地登录备用: API不可用时使用本地数据库
API登录流程
// 1. 尝试API登录
const apiResult = await apiLogin(username, password);

// 2. 失败时尝试会话同步
if (!apiResult.success) {
    const sessionResult = await sessionLogin(username);
}

// 3. 保存用户信息到本地数据库
await saveUserToLocalDB(username, password, userInfo);
管理员全局控制
  • 权限验证: 只有管理员可修改API设置
  • 全局生效: 配置变更对所有用户立即生效
  • 实时同步: 每30秒自动同步服务器配置
  • 操作审计: 记录所有配置变更操作

💬 聊天系统详解

消息类型支持
  • 文本消息: 支持HTML富文本内容
  • 文件消息: 支持任意格式文件传输
  • 系统消息: 系统通知和状态消息
  • 自动回复: 智能自动回复消息
  • 匿名消息: 匿名用户发送的消息
消息状态管理
// 消息状态类型
const MESSAGE_STATUS = {
    SENT: 'sent',           // 已发送
    DELIVERED: 'delivered', // 已送达
    READ: 'read'           // 已读
};
离线消息处理
  • 存储期限: 离线消息保存7天
  • 自动投递: 用户上线时自动投递
  • 过期清理: 自动清理过期消息
  • 投递确认: 投递成功后标记为已投递

📁 文件系统详解

文件上传流程
  1. 拖拽检测: 监听文件拖拽事件
  2. 文件验证: 检查文件大小和格式
  3. 上传处理: 使用FormData上传到服务器
  4. 临时存储: 服务器端临时文件存储
  5. 消息发送: 发送包含文件信息的消息
文件下载机制
// 文件下载处理
app.get('/api/files/:filename', (req, res) => {
    const filePath = path.join(uploadsDir, req.params.filename);
    res.download(filePath);
});

🤖 自动回复系统

触发条件
  • 首次消息: 每个发送者只触发一次
  • 用户在线: 支持在线和离线用户
  • 匿名支持: 对匿名用户也能自动回复
  • HTML支持: 支持富文本自动回复内容
配置管理
// 自动回复配置
const autoReplyConfig = {
    enabled: true,
    message: '<p>感谢您的消息,我会尽快回复!</p>',
    oncePerSender: true,
    supportAnonymous: true
};

📱 实时同步机制

WebSocket连接管理
  • 持久连接: 类似WhatsApp的连接架构
  • 自动重连: 连接断开时自动重连
  • 心跳检测: 定期发送心跳包保持连接
  • 多设备支持: 同用户多设备无缝同步
状态同步范围
  • 在线状态: 用户上线/离线状态
  • 消息状态: 消息已读/未读状态
  • 配置同步: 系统配置变更同步
  • 好友状态: 好友列表变更同步

🔧 高级配置

环境变量配置

# .env 文件
NODE_ENV=production
PORT=3001
DB_HOST=localhost
DB_USER=fcchat
DB_PASSWORD=123123
DB_NAME=fcchat
JWT_SECRET=your-jwt-secret
API_BASE_URL=https://fengchevip.online
UPLOAD_DIR=./uploads
MAX_FILE_SIZE=104857600

数据库连接池配置

const poolConfig = {
    connectionLimit: 10,
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    acquireTimeout: 60000,
    timeout: 60000,
    reconnect: true
};

Socket.IO配置

const io = new Server(server, {
    cors: {
        origin: "*",
        methods: ["GET", "POST"]
    },
    pingTimeout: 60000,
    pingInterval: 25000,
    upgradeTimeout: 30000,
    maxHttpBufferSize: 1e8
});

📊 监控和日志

应用监控

// 健康检查端点
app.get('/api/health', (req, res) => {
    res.json({
        status: 'healthy',
        timestamp: new Date().toISOString(),
        uptime: process.uptime(),
        memory: process.memoryUsage()
    });
});

日志配置

// 日志级别配置
const LOG_LEVELS = {
    ERROR: 0,
    WARN: 1,
    INFO: 2,
    DEBUG: 3
};

// 日志输出格式
const logFormat = `[${timestamp}] ${level}: ${message}`;

性能指标

  • 在线用户数: 实时在线用户统计
  • 消息吞吐量: 每秒处理消息数量
  • 数据库连接: 连接池使用情况
  • 内存使用: 应用内存占用情况

🛡️ 安全最佳实践

输入验证

// 消息内容验证
const validateMessage = (content) => {
    if (!content || content.length > 10000) {
        throw new Error('消息内容无效');
    }
    return sanitizeHtml(content);
};

XSS防护

// HTML内容清理
const cleanHtml = (html) => {
    return DOMPurify.sanitize(html, {
        ALLOWED_TAGS: ['p', 'br', 'strong', 'em', 'a'],
        ALLOWED_ATTR: ['href', 'target']
    });
};

SQL注入防护

// 参数化查询
const query = 'SELECT * FROM users WHERE username = ?';
const results = await db.query(query, [username]);

🎯 未来规划

短期目标 (1-3个月)

  • 移动端响应式优化
  • 消息搜索功能
  • 用户头像系统
  • 群组聊天功能

中期目标 (3-6个月)

  • 视频通话功能
  • 屏幕共享
  • 消息加密传输
  • 多语言支持

长期目标 (6-12个月)

  • 移动端APP开发
  • 插件系统
  • API接口开放
  • 企业版功能

📞 技术支持和维护 https://xoxome.online

版本更新

# 检查更新
git pull origin main

# 重启服务
pm2 restart fcchat

# 数据库迁移
npm run migrate

备份策略

# 数据库备份
mysqldump -u fcchat -p123123 fcchat > backup_$(date +%Y%m%d).sql

# 文件备份
tar -czf uploads_backup_$(date +%Y%m%d).tar.gz uploads/

故障恢复

# 数据库恢复
mysql -u fcchat -p123123 fcchat < backup_20231210.sql

# 应用重启
pm2 restart fcchat
pm2 logs fcchat --lines 100

📚 API接口文档

认证相关接口

用户注册
POST /api/auth/register
Content-Type: application/json

{
    "username": "testuser",
    "password": "123456",
    "fromAPI": false,
    "apiUserInfo": {}
}

响应示例:

{
    "success": true,
    "user": {
        "id": 1,
        "username": "testuser",
        "created_at": "2025-06-10T06:00:00.000Z"
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "message": "注册成功"
}
用户登录
POST /api/auth/login
Content-Type: application/json

{
    "username": "testuser",
    "password": "123456"
}

响应示例:

{
    "success": true,
    "user": {
        "id": 1,
        "username": "testuser"
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "message": "登录成功"
}

管理员接口

获取管理员列表
GET /api/admin/list

响应示例:

{
    "success": true,
    "admins": ["admin", "administrator", "root"],
    "message": "管理员列表获取成功"
}
获取系统配置
GET /api/admin/config

响应示例:

{
    "success": true,
    "config": {
        "apiLoginEnabled": true,
        "lastModifiedBy": "admin",
        "lastModifiedAt": "2025-06-10T06:00:00.000Z"
    },
    "message": "系统配置获取成功"
}
更新系统配置
POST /api/admin/config
Content-Type: application/json

{
    "username": "admin",
    "apiLoginEnabled": false
}

响应示例:

{
    "success": true,
    "message": "API登录已禁用",
    "config": {
        "apiLoginEnabled": false,
        "lastModifiedBy": "admin",
        "lastModifiedAt": "2025-06-10T06:00:00.000Z"
    }
}

用户功能接口

获取好友列表
GET /api/friends/:username

响应示例:

{
    "success": true,
    "friends": ["friend1", "friend2"],
    "message": "好友列表获取成功"
}
添加好友
POST /api/friends/add
Content-Type: application/json

{
    "username": "currentuser",
    "friendUsername": "newfriend"
}
删除好友
POST /api/friends/remove
Content-Type: application/json

{
    "username": "currentuser",
    "friendUsername": "oldfriend"
}

聊天功能接口

获取聊天设置
GET /api/chat/settings/:username

响应示例:

{
    "success": true,
    "settings": {
        "backgroundColor": "#000000",
        "textColor": "#ffffff"
    },
    "message": "聊天设置获取成功"
}
更新聊天设置
POST /api/chat/settings
Content-Type: application/json

{
    "username": "testuser",
    "backgroundColor": "#001122",
    "textColor": "#ffffff"
}
获取自动回复设置
GET /api/auto-reply/:username

响应示例:

{
    "success": true,
    "settings": {
        "enabled": true,
        "message": "<p>自动回复消息</p>"
    },
    "message": "自动回复设置获取成功"
}

文件上传接口

文件上传
POST /api/upload
Content-Type: multipart/form-data

file: [文件数据]

响应示例:

{
    "success": true,
    "fileInfo": {
        "filename": "uploaded_file.pdf",
        "originalName": "document.pdf",
        "size": 1024000,
        "mimetype": "application/pdf",
        "uploadTime": "2025-06-10T06:00:00.000Z"
    },
    "message": "文件上传成功"
}
文件下载
GET /api/files/:filename

匿名聊天接口

生成匿名聊天链接
POST /api/anonymous/generate-link
Content-Type: application/json

{
    "username": "targetuser"
}

响应示例:

{
    "success": true,
    "linkId": "abc123def456",
    "chatUrl": "http://localhost:3001/anonymous/abc123def456",
    "message": "匿名聊天链接生成成功"
}

健康检查接口

系统健康状态
GET /api/health

响应示例:

{
    "status": "healthy",
    "timestamp": "2025-06-10T06:00:00.000Z",
    "uptime": 3600,
    "memory": {
        "rss": 50331648,
        "heapTotal": 20971520,
        "heapUsed": 15728640
    }
}
数据库健康检查
GET /api/admin/db-health

响应示例:

{
    "healthy": true
}

🔌 Socket.IO事件文档

客户端发送事件

用户加入
socket.emit('join', {
    username: 'testuser',
    source: 'web'
});
发送消息
socket.emit('sendMessage', {
    to: 'recipient',
    content: 'Hello World!',
    type: 'text',
    fileInfo: null
});
消息已读
socket.emit('markAsRead', {
    messageId: 'msg_123456',
    from: 'sender'
});

服务器发送事件

接收消息
socket.on('receiveMessage', (data) => {
    console.log('收到消息:', data);
    // data 包含: from, content, type, timestamp, messageId 等
});
用户状态更新
socket.on('userStatusUpdate', (data) => {
    console.log('用户状态:', data);
    // data 包含: username, status, timestamp
});
在线用户列表
socket.on('onlineUsers', (users) => {
    console.log('在线用户:', users);
});

开发团队: https://xoxome.online
最后更新: 2025年6月10日
版本: v2.1.1
许可证: MIT License
技术支持: 提供完整的API文档和WebSocket事件说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值