Inspired by previous projects
Go-Class 是一个使用 Go 语言开发的多人视频聊天应用,支持通过 SFU(Selective Forwarding Unit)架构进行实时视频传输,并提供了用户注册、登录、房间管理、录播等功能。项目采用了 WebRTC 技术实现低延迟的视频聊天功能,后台使用 JWT 进行身份验证,并提供了简洁的 API 接口。
go-class/
│
├── cmd/
│ └── main.go # 主程序入口,初始化路由和信令服务
├── api/
│ ├── auth.go # 用户认证逻辑
│ ├── rooms.go # 房间管理 API
│ └── recordings.go # 录播管理
├── sfu/
│ ├── sfu.go # SFU 初始化,处理 WebRTC 信令
│ └── recorder.go # 录播处理
├── config/
│ └── config.go # 项目配置
├── models/
│ └── user.go # 用户模型与数据库交互
├── go.mod # Go 模块文件
└── README.md # 项目文档
- 用户注册和登录:用户可以通过提供用户名和密码进行注册和登录,登录后将获得 JWT token 用于后续的 API 访问。
- 视频房间管理:允许用户创建和加入视频房间。管理员可以删除房间。
- 多人视频聊天:基于 WebRTC 技术,使用 SFU 架构实现多人实时视频通话。
- 录播功能:提供录制视频会议的功能,录制的视频可以保存并在后台管理。
- 后台管理:管理员可以查看并管理房间、用户和录制视频。
-
克隆项目到本地:
git clone https://github.com/your-username/streaming-app.git cd streaming-app -
初始化 Go 模块:
go mod tidy
-
运行项目:
go run cmd/main.go
-
访问
http://localhost:8080,通过 API 测试用户注册和登录功能。
如果你希望使用 Docker 部署项目,确保已经安装 Docker,然后可以执行以下步骤:
-
构建 Docker 镜像:
docker build -t streaming-app . -
运行 Docker 容器:
docker run -p 8080:8080 streaming-app
你可以使用 curl 或 Postman 进行 API 调试,以下是一些示例 API 请求。
curl -X POST http://localhost:8080/register \
-H "Content-Type: application/json" \
-d '{"username": "user1", "password": "pass123"}'curl -X POST http://localhost:8080/login \
-H "Content-Type: application/json" \
-d '{"username": "user1", "password": "pass123"}'成功登录后会返回一个 JWT token,用于后续的 API 请求。
curl -X POST http://localhost:8080/admin/create-room \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your_token>" \
-d '{"name": "room1", "host": "user1"}'curl -X GET http://localhost:8080/admin/rooms \
-H "Authorization: Bearer <your_token>"项目配置文件 config/config.go 中可以修改应用的配置参数,比如数据库连接、WebRTC 配置、日志级别等。
- 完善前端界面:目前项目主要以后端 API 为主,可以增加前端界面(使用 React/Vue.js)来提供用户友好的交互界面。
- 负载均衡和高并发优化:可以使用 Nginx 或其他负载均衡工具对高并发进行优化。
- 实时聊天和屏幕共享:增加多人视频会议中的实时文本聊天和屏幕共享功能。
欢迎你为这个项目贡献代码!请先提交 Issue,描述你的建议或 bug 报告。提交 Pull Request 前,请确保你的代码通过了基本测试。
本项目遵循 MIT 许可证。详细信息请查阅 LICENSE 文件。