基于 mediasoup 的 WebRTC SFU 基础设施:一个房间一个 Router,音频/视频/屏幕共享经 SFU 转发, 浏览器、安卓 WebView、Node/Go 客户端均可接入。
| 项目 | 值 |
|---|---|
| 管理 API | https://mediasoup.ai-x-service.top |
| WebSocket 信令 | wss://mediasoup.ai-x-service.top/ws |
| 在线测试页 | https://mediasoup.ai-x-service.top/ |
| API Key | <你的密钥>(节点 /opt/mediasoup_service/config.json 或 --show-key) |
| 媒体端口 | UDP/TCP 40000-40099,announcedIp 8.134.135.91 |
管理 API 使用请求头 X-API-Key: <密钥> 或 Authorization: Bearer <密钥>。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /health | 存活探针(免鉴权) |
| GET | /docs · /openapi.json | 本文档 / OpenAPI(免鉴权) |
| GET | /api/doc | Markdown 交接文档(需密钥) |
| GET | /api/status | worker / 房间 / transport / producer 统计 |
| GET | /api/config | 只读配置(密钥已掩码) |
| GET | /api/rooms | 房间列表 |
| POST | /api/rooms | 创建房间 {"roomId":"demo","maxPeers":12} |
| GET | /api/rooms/{id} | 房间详情 |
| POST | /api/rooms/{id}/close | 关闭房间(踢出所有连接) |
连接:wss://mediasoup.ai-x-service.top/ws?room=<房间ID>&token=<房间token>,或
wss://mediasoup.ai-x-service.top/ws?room=<房间ID>&key=<API Key>(用 Key 时可自动创建房间)。
消息格式:客户端 {"id":"1","method":"join","data":{...}};
服务端响应 {"id":"1","ok":true,"data":{...}};服务端通知 {"method":"newProducer","data":{...}}。
| 方法 | 方向 | 说明 |
|---|---|---|
getRouterRtpCapabilities | C→S | 取 Router 能力,用于 device.load() |
join | C→S | 加入房间(device 加载后) |
createWebRtcTransport | C→S | {"producing":true} 创建发送/接收 transport |
connectWebRtcTransport | C→S | 提交 DTLS 参数 |
produce | C→S | 发布音视频/屏幕共享 |
consume | C→S | 订阅他人的 producer |
resumeConsumer | C→S | 恢复消费(开始收流) |
closeProducer | C→S | 停止发布 |
getProducers | C→S | 列出房间内容(不含自己) |
restartIce | C→S | ICE 重启 |
newProducer / producerClosed / peerJoined / peerLeft / consumerClosed | S→C | 房间事件通知 |
# 健康
curl -s https://mediasoup.ai-x-service.top/health
# 创建房间
curl -s -H "X-API-Key: <密钥>" -H 'Content-Type: application/json' \
-d '{"roomId":"demo"}' https://mediasoup.ai-x-service.top/api/rooms
# 状态
curl -s -H "X-API-Key: <密钥>" https://mediasoup.ai-x-service.top/api/status
浏览器打开 https://mediasoup.ai-x-service.top/,两个标签页用同一个房间即可互通。
40000-40099 限制;请勿把 API Key 写入前端公开代码。
生产应用建议由自己的后端用 API Key 创建房间并下发 room token,客户端只拿 room token。