最近做了大大的优化,把很多没用的东西去掉了,然后把页面做的更美观了一些。添加了一些新的功能。增加了docker部署。

主要功能

  • 实时聊天:公共/私有频道、好友私聊,消息实时推送。
  • 端到端加密(E2EE):私聊用 ECDH + AES-256-GCM 加密,服务器只存密文,无法解密(详见下文)。
  • 协作功能:@提及与提醒、历史消息搜索、文件/图片/语音分享、消息回应(表情)、撤回与回复。
  • 图片/视频消息:图片在聊天框直接预览(点击可放大);浏览器可播放的视频(mp4/webm/mov,≤100MB)内嵌播放器直接看。
  • 文件发送:文档/压缩包/音频等文件存服务器,7 天自动过期清理;下载保留原始文件名。
  • 表情与表情包:输入框表情选择器(常用 emoji 一键插入);右键图片可收藏为自定义表情包、也可上传本地图片,仅自己可见,添加成功/重复有提示。
  • B 站视频卡片:消息中粘贴 B 站链接(BV 号),自动渲染可播放的视频卡片。
  • 网易云音乐卡片:消息中粘贴网易云音乐链接,自动渲染带封面的可点音乐卡片(点击唤起 App);发外链格式(#/outchain/2/歌曲ID/)则直接渲染可播放的内嵌播放器。
  • 消息管理:未读计数与红点、会话置顶、按最近排序、跳到第一条未读。
  • 好友与个人资料:好友申请与同意、头像上传、资料编辑、在线状态点。
  • 频道管理:创建/邀请(需对方同意)/改名/解散、成员列表与在线状态。
  • 管理后台:用户与频道管理、日志审计。
  • 账号安全:JWT 会话、单会话登录(顶号冻结)、登录/注册/上传限流。
  • 界面:深色模式、响应式三栏布局。

    项目结构

Jchat-webchat/
├── client/              # Vue 3 + Vite 前端(源码在 src/,构建产物在 dist/)
│   └── src/
│       ├── api/         # HTTP 与 Socket.IO 客户端
│       ├── components/  # 组件(消息气泡、表情面板、布局等)
│       ├── stores/      # 响应式状态(认证、频道、好友、E2EE、表情包…)
│       ├── utils/       # 工具(B 站链接解析等)
│       ├── views/       # 页面(登录、注册、聊天、资料、管理后台)
│       └── styles/      # 设计令牌与基础样式
├── server/              # 后端模块:数据库、加密、日志、校验、路由、Socket
│   └── data/            # 运行时数据库与管理员凭据(不提交到 Git)
├── public/              # 静态资源与上传:图片、用户上传(uploads 不提交到 Git)
├── tests/               # 后端自动化测试(node --test)
├── scripts/             # 数据重置脚本
├── deploy/              # 部署脚本与指南(windows / linux / docker)
├── images/              # README 界面预览图
├── index.js             # 服务入口(API、静态资源与 Socket.IO,支持可选 HTTPS)
├── Dockerfile           # 容器镜像构建
├── AGENT.md             # 给 AI 开发助手看的项目说明
└── package.json