最近做了大大的优化,把很多没用的东西去掉了,然后把页面做的更美观了一些。添加了一些新的功能。增加了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
Conversation
评论