# peerlink **Repository Path**: jichenstudy/peerlink ## Basic Information - **Project Name**: peerlink - **Description**: PeerLink 是一个基于 WebRTC 的去中心化即时通讯平台,集成端到端加密聊天、音视频通话、屏幕共享与文件直传。没有云端数据留存,会话结束后自动销毁房间。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://im.shujichen.com/ - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PeerLink 一个基于 WebRTC 的去中心化即时通讯平台,集成端到端加密聊天、音视频通话、屏幕共享与文件直传。所有通信均在用户之间点对点加密传输,没有云端数据留存,会话结束后自动销毁房间,从架构层面保障用户隐私与安全。 ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Go](https://img.shields.io/badge/backend-Go%201.21-00ADD8.svg) ![React](https://img.shields.io/badge/frontend-React%2018-61DAFB.svg) ## ✨ 核心特性 ### 🌐 智能混合网络 - **网络切换**:支持在不同网络环境间无缝切换,自动重连。 - **状态可视化**:在用户列表中通过不同图标(🏠局域网 / 🌐公网)直观展示连接类型。 - **自适应连接**:自动检测网络环境,优先选择局域网直连(速度最快),公网环境自动进行 NAT 穿透。 ### 📁 强大的文件传输 - **断点续传**:支持 P2P 链路级的断点续传,中断后无缝恢复。 - **传输控制**:支持暂停、恢复、取消传输,实时显示传输速度和剩余时间。 - **完整性校验**:实时 SHA-256 采样哈希校验,确保文件数据 100% 准确。 - **无界传输**:基于 DataChannel 的流式传输,支持 GB 级大文件,不受服务器带宽限制。 - **流式直写磁盘**:采用 FileSystem Access API,大文件直接写入磁盘,有效解决浏览器内存溢出(OOM)问题。 ### 💬 极致聊天体验 - **智能已读/未读管理**: - 支持群聊已读/未读人数实时统计 - 自动记录未读消息数和醒目的未读红线定位 - 智能滚动:有未读消息时自动定位到第一条未读,无未读时直达底部 - **消息持久化**:聊天记录存储在本地浏览器中,刷新页面不丢失,且数据完全由用户掌控。 - **多模式聊天**:支持全局广播(Global Chat)和私密点对点聊天(Private Chat)。 ### 🔒 安全与隐私 - **私密房间**:支持创建 4 位 PIN 码加密的私密房间。 - **分享链接**:一键生成带房间信息和密钥的专属链接,直接分享给好友。 - **会话即焚**:房间无人使用 5 分钟后自动销毁,云端不存储消息和文件。 ### 📞 音视频通话 - **语音通话**:纯语音通话模式,节省带宽。 - **动态切换**:通话中可随时开关摄像头和麦克风。 - **高清视频通话**:基于 WebRTC 的点对点视频通话,支持 720p 高清画质。 - **设备兼容**:自动检测设备,无摄像头/麦克风也可接收对方音视频(仅接收模式)。 ### 🖥️ 屏幕共享 - **实时同步**:通过 SDP 重新协商确保分辨率变化时对方能正确接收。 - **全屏观看**:接收方可全屏查看共享内容,视频保持原始比例不拉伸。 - **一键共享**:通话中随时开启屏幕共享,支持共享整个屏幕、应用窗口或浏览器标签页。 ### 🎨 现代化界面 - **响应式设计**:完美适配桌面端和移动端,侧边栏在移动端自动折叠。 - **实时状态**:在线人数、用户状态(连接中/已连接/离线)实时更新。 - **美观交互**:基于 shadcn/ui 和 Tailwind CSS 构建,提供流畅的动画和精致的视觉效果。 ## 📸 效果演示 ![首页](assets/首页.png) ![房间验证](assets/房间验证.png) ![文件传输1](assets/文件传输1.png) ![文件传输2](assets/文件传输2.png) ![文件传输3](assets/文件传输3.png) ![消息详情](assets/消息详情.png) ![视频通话](assets/视频通话.png) ![屏幕共享](assets/屏幕共享.png) ![未读消息](assets/未读消息.png) ## 🛠️ 技术栈 **后端 (Backend)** - **Go 1.21**: 高性能并发处理 - **Gorilla WebSocket**: 可靠的信令交换通道 - **并发安全**: 完善的锁机制和协程管理 **前端 (Frontend)** - **React 18**: 组件化 UI 开发 - **Vite 3**: 极速构建体验 - **WebRTC**: 核心 P2P 通信技术 - **i18next**: 国际化框架,支持多语言切换 - **Tailwind CSS**: 原子化 CSS 样式 - **shadcn/ui**: 高质量 UI 组件库 - **lucide-react**: 现代化图标库 - **CryptoJS**: 前端数据加密与哈希计算 - **FileSystem Access API**: 大文件流式直写磁盘 ## 🚀 快速开始 ### 方式一:Docker 一键部署(推荐) 如果你安装了 Docker,可以直接通过源码构建并运行,无需配置开发环境。 ```bash # 1. 克隆仓库 git clone https://github.com/your-repo/peerlink.git cd peerlink # 2. 构建镜像 docker build -t peerlink . # 3. 运行容器 docker run -d -p 3456:3456 --name peerlink peerlink ``` 访问 `http://localhost:3456` 即可开始使用。 ### 方式二:本地源码运行 适合开发和调试。 ```bash # 1. 克隆仓库 git clone https://github.com/your-repo/peerlink.git cd peerlink # 2. 构建前端 cd frontend npm install npm run build cd .. # 3. 运行后端 go run . ``` ## 📝 开发计划 - [x] 基础 P2P 聊天与文件传输 - [x] 大文件流式直写磁盘 - [x] 多语言国际化 (zh/en) - [x] 断点续传与哈希校验 - [x] 局域网/公网智能切换与标识 - [x] 消息持久化与历史记录 - [x] 未读消息计数与智能定位 - [x] 音视频通话支持 - [x] 屏幕共享功能 - [ ] 集成AI相关 ## 📄 License MIT License - 自由使用,欢迎贡献!