Skip to content

Commit 1de50c0

Browse files
author
shijiashuai
committed
docs: add bilingual README and update configs
1 parent 77401f5 commit 1de50c0

File tree

4 files changed

+174
-27
lines changed

4 files changed

+174
-27
lines changed

README.en.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# WebRTC
2+
3+
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
4+
![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?logo=go&logoColor=white)
5+
![WebRTC](https://img.shields.io/badge/WebRTC-Enabled-333333?logo=webrtc&logoColor=white)
6+
![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker&logoColor=white)
7+
8+
[简体中文](README.md) | English
9+
10+
A minimal WebRTC demo project built with Go, providing a WebSocket signaling server and browser-based demo for peer-to-peer audio/video communication.
11+
12+
## Features
13+
14+
- **WebSocket Signaling** — Gorilla WebSocket for Offer/Answer/ICE Candidate relay within rooms
15+
- **Browser Frontend** — One-click audio/video capture and peer-to-peer calling
16+
- **Go Modules** — Easy dependency management and deployment
17+
- **Extensible** — Ready for TURN/SFU/recording integration
18+
19+
## Quick Start
20+
21+
```bash
22+
git clone https://github.com/LessUp/WebRTC.git
23+
cd WebRTC
24+
go mod tidy
25+
go run ./cmd/server
26+
```
27+
28+
Visit http://localhost:8080, open two tabs, enter the same room name, copy one's ID to the other, and click Call.
29+
30+
## Configuration
31+
32+
- `ADDR`: Listen address (default `:8080`)
33+
- `WS_ALLOWED_ORIGINS`: Comma-separated allowed origins (default: localhost only)
34+
35+
## Project Structure
36+
37+
```
38+
WebRTC/
39+
├── cmd/server/ # HTTP + WebSocket entry
40+
├── internal/signal/ # Signaling (room management, message relay)
41+
├── web/ # Browser UI (HTML + JS + CSS)
42+
├── docs/ # Technical guides
43+
├── Dockerfile # Multi-stage Docker build
44+
└── go.mod
45+
```
46+
47+
## Documentation
48+
49+
- [Technical Guide](docs/guide.md) — Architecture, frontend, media, recording
50+
- [Signaling Deep Dive](docs/signaling.md) — Signaling & room management details
51+
52+
## Roadmap
53+
54+
- [x] Room member list & auto-call prompt
55+
- [ ] TURN support (coturn)
56+
- [ ] Multi-party calls (Mesh / SFU)
57+
- [ ] Recording & RTMP relay
58+
- [x] Docker image & cloud deployment
59+
60+
## License
61+
62+
[MIT](LICENSE)

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# WebRTC
22

3+
简体中文 | [English](README.en.md)
4+
35
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
46
![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?logo=go&logoColor=white)
57
![WebRTC](https://img.shields.io/badge/WebRTC-Enabled-333333?logo=webrtc&logoColor=white)

_config.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
title: WebRTC
2-
description: Minimal WebRTC demo — Go WebSocket signaling, room management, peer-to-peer media
2+
description: Go WebSocket 信令 · 房间管理 · 点对点音视频 · 屏幕共享 · DataChannel · 多人 Mesh
33
remote_theme: pages-themes/cayman@v0.2.0
44
plugins:
55
- jekyll-remote-theme
6+
repository: LessUp/webrtc
7+
show_downloads: false

index.md

Lines changed: 107 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,135 @@ layout: default
33
title: WebRTC
44
---
55

6-
# WebRTC
6+
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/LessUp/webrtc/blob/main/LICENSE)
7+
![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?logo=go&logoColor=white)
8+
![WebRTC](https://img.shields.io/badge/WebRTC-Enabled-333333?logo=webrtc&logoColor=white)
9+
![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker&logoColor=white)
710

8-
基于 Go 的最小可用 WebRTC 示例项目WebSocket 信令服务器与浏览器端 Demo,适合作为实时音视频应用的入门模板
11+
基于 Go WebRTC 示例项目,提供完整的 WebSocket 信令服务与浏览器端 Demo。从一对一通话到多人 Mesh 房间,覆盖 WebRTC 核心能力的学习与实践
912

10-
## 核心特性
11-
12-
- **WebSocket 信令** — Gorilla WebSocket 实现房间内 Offer/Answer/ICE Candidate 转发
13-
- **浏览器前端** — 一键采集音视频并发起点对点呼叫
14-
- **Go Modules** — 依赖管理,便于扩展与部署
15-
- **可扩展架构** — 可进一步接入 TURN/SFU/录制等能力
13+
---
1614

17-
## 文档
15+
## 已实现功能
1816

19-
- [README](README.md) — 项目概述与快速开始
20-
- [使用指南](docs/guide.md) — 详细使用教程
21-
- [信令协议](docs/signaling.md) — WebSocket 信令协议文档
17+
| 阶段 | 能力 | 状态 |
18+
|------|------|:----:|
19+
| **阶段 1** | 一对一通话、状态展示、错误处理、心跳保活 ||
20+
| **阶段 2** | 静音/摄像头开关、屏幕共享、DataChannel 文本聊天、本地录制 ||
21+
| **阶段 3** | 房间成员列表、自动呼叫提示、小规模 Mesh 多人通话 ||
22+
| **阶段 4** | Docker 多阶段构建与部署 ||
23+
| **计划中** | TURN 支持(coturn)、HTTPS/WSS 反向代理 | 🔜 |
2224

23-
## 架构
25+
## 架构总览
2426

2527
```
26-
Browser ──HTTP GET /──→ HTTP 静态文件
27-
Browser ──WebSocket /ws──→ Signal Hub
28-
Browser ──WebRTC 媒体通道──→ 远端浏览器
28+
┌─────────────────────────────────────────────────┐
29+
│ 浏览器 A │
30+
│ ┌────────┐ ┌──────────┐ ┌──────────────┐ │
31+
│ │ HTML UI│───→│ app.js │───→│ getUserMedia │ │
32+
│ └────────┘ └────┬─────┘ └──────┬───────┘ │
33+
│ │ │ │
34+
└─────────────────────┼─────────────────┼──────────┘
35+
│ WebSocket │ WebRTC P2P
36+
┌──────▼──────┐ │
37+
│ Go 后端 │ │
38+
│ ┌──────────┐│ │
39+
│ │Signal Hub││ │
40+
│ │ (房间管理) ││ │
41+
│ └──────────┘│ │
42+
└──────┬──────┘ │
43+
│ WebSocket │
44+
┌─────────────────────┼────────────────┼───────────┐
45+
│ 浏览器 B │ │ │
46+
│ ┌────────┐ ┌────▼─────┐ ┌─────▼────────┐ │
47+
│ │ HTML UI│───→│ app.js │───→│ getUserMedia │ │
48+
│ └────────┘ └──────────┘ └──────────────┘ │
49+
└──────────────────────────────────────────────────┘
2950
```
3051

52+
**信令流程**: Browser → WebSocket `/ws` → Signal Hub(Offer / Answer / ICE Candidate 转发)→ WebSocket → Browser
53+
**媒体流程**: Browser ←→ WebRTC P2P 音视频 / DataChannel ←→ Browser
54+
3155
## 快速开始
3256

3357
```bash
34-
# 克隆项目
35-
git clone https://github.com/LessUp/WebRTC.git
36-
cd WebRTC
58+
# 克隆
59+
git clone https://github.com/LessUp/webrtc.git
60+
cd webrtc
3761

38-
# 运行服务器
39-
go run cmd/server/main.go
62+
# (可选)国内代理
63+
go env -w GOPROXY=https://goproxy.cn,direct
4064

65+
# 启动
66+
go mod tidy
67+
go run ./cmd/server
4168
# 浏览器访问 http://localhost:8080
4269
```
4370

71+
### Docker
72+
73+
```bash
74+
docker build -t webrtc .
75+
docker run --rm -p 8080:8080 webrtc
76+
```
77+
78+
### 本地测试步骤
79+
80+
1. 打开两个浏览器窗口,访问 `http://localhost:8080`
81+
2. 输入相同房间名并 Join
82+
3. 复制一方 Your ID 到另一方 Remote ID,点击 Call
83+
4. 允许摄像头/麦克风权限,即可看到远端视频
84+
85+
## 核心特性
86+
87+
- **WebSocket 信令** — Gorilla WebSocket 实现房间内 Offer/Answer/ICE Candidate 转发,支持心跳保活
88+
- **媒体控制** — 静音/取消静音、摄像头开关、屏幕共享(`getDisplayMedia`
89+
- **DataChannel** — 点对点文本聊天,无需服务器中转
90+
- **本地录制** — MediaRecorder 录制音视频流,导出 `.webm` 下载
91+
- **多人 Mesh** — 房间成员列表广播,多 PeerConnection 管理,网格视频布局
92+
- **Docker** — 多阶段 Dockerfile,Go 编译 + 静态前端打包
93+
94+
## 配置
95+
96+
| 环境变量 | 说明 | 默认值 |
97+
|---------|------|--------|
98+
| `ADDR` | HTTP 监听地址 | `:8080` |
99+
| `WS_ALLOWED_ORIGINS` | WebSocket 允许来源(逗号分隔) | `localhost` |
100+
101+
## 项目结构
102+
103+
```
104+
webrtc/
105+
├── cmd/server/ # HTTP + WebSocket 入口
106+
├── internal/signal/ # 信令逻辑(房间、消息转发)
107+
├── web/
108+
│ ├── index.html # 浏览器 UI
109+
│ ├── app.js # WebRTC & 信令逻辑
110+
│ └── styles.css # 样式
111+
├── docs/
112+
│ ├── guide.md # 项目技术说明
113+
│ └── signaling.md # 信令协议详解
114+
├── changelog/ # 变更日志
115+
└── Dockerfile # 多阶段构建
116+
```
117+
44118
## 技术栈
45119

46120
| 类别 | 技术 |
47121
|------|------|
48122
| 后端 | Go 1.22+ |
49123
| 信令 | Gorilla WebSocket |
50-
| 前端 | HTML + JavaScript |
51-
| 容器 | Docker |
124+
| 前端 | HTML + Vanilla JS |
125+
| 媒体 | WebRTC (getUserMedia, RTCPeerConnection, DataChannel, MediaRecorder) |
126+
| 容器 | Docker (multi-stage) |
127+
| CI | GitHub Actions |
52128

53-
## 链接
129+
---
130+
131+
## 文档
54132

55-
- [GitHub 仓库](https://github.com/LessUp/WebRTC)
56-
- [README](README.md)
133+
- [完整 README](README.md)
134+
- [使用指南](docs/guide.md) — 架构、前端、媒体、录制
135+
- [信令协议](docs/signaling.md) — 信令与房间管理深入讲解
136+
- [开发路线图](ROADMAP.md)
137+
- [贡献指南](CONTRIBUTING.md)

0 commit comments

Comments
 (0)