一个用 Go 信令服务和原生 JavaScript 前端构建的、适合学习与演示的 WebRTC 项目。
English | 简体中文 | 在线文档 | OpenSpec 导航
LessUp WebRTC 面向想快速看懂 WebRTC 核心链路的人:代码量适中,但关键能力完整,适合学习、演示和做小规模功能验证。
- WebSocket 信令、房间管理、身份绑定
- 浏览器端音视频直连与 DataChannel 聊天
- 静音、摄像头开关、屏幕共享、本地录制
- 无框架前端,直接由 Go 服务静态文件
- Docker 部署与公开文档站点
| 模块 | 状态 |
|---|---|
| 信令服务 | Go + Gorilla WebSocket |
| 浏览器客户端 | 原生 JavaScript ES Modules |
| 通话模型 | 一对一与小规模 Mesh |
| 媒体控制 | 静音、摄像头、共享屏幕 |
| 录制 | 浏览器端 MediaRecorder |
| 规范与文档 | GitHub Pages + OpenSpec |
git clone https://github.com/LessUp/webrtc.git
cd webrtc
go run ./cmd/server打开 http://localhost:8080,在两个浏览器窗口加入同一个房间后发起通话。
make check
cd web && npm testdocker build -f deploy/docker/Dockerfile -t webrtc .
docker run --rm -p 8080:8080 webrtc浏览器 UI
└─ web/src/core/app.js
├─ controllers/media.js
├─ controllers/peers.js
├─ controllers/signaling.js
├─ controllers/stats.js
└─ controllers/ui.js
Go 服务
├─ cmd/server/main.go
└─ internal/signal/
服务端暴露的关键入口:
GET /— 前端页面GET /config.js— 运行时 RTC 配置GET /healthz— 健康检查GET /ws— 信令 WebSocket
本仓库只使用 OpenSpec 管理需求、设计和任务。
- 主规范:
openspec/specs/ - 活跃变更:
openspec/changes/ - 公开规范导航:
docs/specs.zh-CN.md
推荐流程:
- 先创建或更新 OpenSpec change
- 按
proposal.md、design.md、tasks.md实施 - 运行仓库校验命令
- 合并前做一次 review
cmd/server/ 应用入口
internal/signal/ 信令核心与测试
web/ 静态前端
docs/ 公共文档
openspec/ 规范与变更
deploy/ Docker / Caddy / 部署资源
请先阅读 CONTRIBUTING.md,并以当前 OpenSpec change 为准推进工作。这个仓库更偏好聚焦、低噪音、能一次收口的改动。