Aurora Signal

基于 Go 1.23 的 WebRTC 信令服务,提供房间管理、会话协商(SDP / ICE)与基础控制。

快速开始 API 参考 系统设计


特性一览

能力 说明
房间管理 REST API 创建 / 查询房间,maxParticipants 人数上限,空房自动清理
WebSocket 信令 offer / answer / trickle / chat / mute / leave,消息自动填充 id + ts + version
角色权限 三级角色:viewer / speaker / moderator(可远程静音他人)
安全 JWT 认证、Admin Key 常量时间比较、速率限制、安全响应头
可观测性 Prometheus 指标(signal_*)、结构化 JSON 日志、Request-ID 追踪
高可用 Redis Pub/Sub 多节点扩展、graceful shutdown、panic recovery
容器化 ldflags 版本注入、OCI 标签、Distroless 运行时
Web Demo 断线退避重连、连接状态指示、Enter 发送聊天

架构概览

flowchart LR
  subgraph 客户端
    A[Browser / App]
  end
  subgraph 基础设施
    B["Signal Server<br/>(Go)"]
    C[(Redis)]
    D[coturn<br/>STUN / TURN]
  end
  A <-->|WebSocket JSON| B
  B <-->|Pub/Sub| C
  A <-->|STUN / TURN| D
  • 单节点 — 无需 Redis,适合开发与小规模部署
  • 多节点 — Redis 广播房间事件,所有节点可接入同一房间

快速开始

# 1. 设置 JWT Secret(必填)
export SIGNAL_JWT_SECRET="change-me-to-a-long-random-secret"

# 2. 启动服务
make run            # 或 go run ./cmd/server

# 3. 打开 Demo — http://localhost:8080/demo
#    输入房间 ID + 显示名,新开窗口重复操作即可 1v1 实测

使用 Docker Compose 可一键启动 Signal + Redis + coturn:先执行 cp env.example docker/.env,设置 SIGNAL_JWT_SECRET,再运行 cd docker && docker compose up --build


REST API 速览

方法 路径 说明
POST /api/v1/rooms 创建房间
GET /api/v1/rooms/{id} 查询房间
POST /api/v1/rooms/{id}/join-token 签发 Join Token
GET /api/v1/ice-servers ICE 服务器配置
GET /healthz 存活探针
GET /readyz 就绪探针
GET /metrics Prometheus 指标

WebSocketGET /ws/v1?token=<JWT>

完整请求 / 响应示例 → API 参考


文档

页面 内容
API 参考 REST 端点与 WebSocket 信令协议完整说明
系统设计 架构、数据模型、协议定义、部署与里程碑
变更日志 版本发布历史
贡献指南 开发环境、分支规范与提交流程
安全策略 漏洞报告与处理流程

技术栈

技术 版本 用途
Go 1.23 服务端主语言
gorilla/websocket 1.5 WebSocket 实现
Redis 7+ Pub/Sub 多节点扩展
Prometheus 指标采集
Docker 容器化部署
coturn STUN / TURN 服务

许可证

MIT License © 2025-2026 LessUp