|
|
1 månad sedan | |
|---|---|---|
| deploy | 1 månad sedan | |
| scripts | 1 månad sedan | |
| src | 1 månad sedan | |
| .dockerignore | 1 månad sedan | |
| .env.example | 1 månad sedan | |
| .env.live | 1 månad sedan | |
| .gitignore | 1 månad sedan | |
| .mise.toml | 1 månad sedan | |
| DEPLOY.live.md | 1 månad sedan | |
| Dockerfile | 1 månad sedan | |
| README.md | 1 månad sedan | |
| docker-compose.image.yml | 1 månad sedan | |
| docker-compose.yml | 1 månad sedan | |
| package-lock.json | 1 månad sedan | |
| package.json | 1 månad sedan | |
这是给 OA 前端 src/views/live/room_sfu.vue 准备的 mediasoup + protoo SFU 服务。当前版本先兼容现有前端协议,不做 token 校验。
npm install
copy .env.example .env
npm start
本地健康检查:
curl http://127.0.0.1:4443/healthz
WebSocket 入口兼容这类地址:
wss://你的域名/ws_webrtc_sfu_api/?roomId=xxx&peerId=xxx
wss://你的域名/ws_webrtc_sfu_api_test/?roomId=xxx&peerId=xxx
如果直接连服务端端口,也可以:
ws://127.0.0.1:4443/?roomId=xxx&peerId=xxx
PORT。MEDIASOUP_RTC_MIN_PORT 到 MEDIASOUP_RTC_MAX_PORT 的 UDP,建议 TCP 也放行作为兜底。MEDIASOUP_ANNOUNCED_ADDRESS 填公网 IP 或域名。MEDIASOUP_ANNOUNCED_ADDRESS 必须填浏览器可达的公网地址。AUTH_ENABLED=false,只校验 roomId 和 peerId 是否存在。可以在 Windows 本地打包镜像,保存为 tar,服务器只负责 docker load 和启动容器。Windows 本机的 Node 版本不影响镜像内容,Dockerfile 使用的是 node:22-bullseye-slim。
live 环境完整部署步骤见:
DEPLOY.live.md
本地打包:
cd D:\work\yzx_oa_sfu
.\scripts\docker-build-save.ps1
如果服务器是常见 x86_64 Linux,上面的默认平台 linux/amd64 就可以。生成文件:
yzx-oa-sfu_0.1.0-live_linux-amd64.tar
把这些文件传到服务器同一个目录:
yzx-oa-sfu_0.1.0-live_linux-amd64.tar
docker-compose.image.yml
.env
scripts/docker-load-run.sh(可选)
测试环境 .env 建议:
NODE_ENV=production
LISTEN_IP=0.0.0.0
PORT=4443
PUBLIC_BASE_URL=https://oa.live.educlouddata.com/ws_webrtc_sfu_api_test
AUTH_ENABLED=false
MEDIASOUP_WORKERS=1
MEDIASOUP_LISTEN_IP=0.0.0.0
MEDIASOUP_ANNOUNCED_ADDRESS=oa.live.educlouddata.com
MEDIASOUP_RTC_MIN_PORT=40000
MEDIASOUP_RTC_MAX_PORT=40100
MEDIASOUP_ENABLE_UDP=true
MEDIASOUP_ENABLE_TCP=true
MEDIASOUP_PREFER_UDP=true
MEDIASOUP_INITIAL_AVAILABLE_OUTGOING_BITRATE=1000000
ROOM_IDLE_TIMEOUT_MS=300000
服务器启动:
docker load -i yzx-oa-sfu_0.1.0-live_linux-amd64.tar
SFU_IMAGE=yzx-oa-sfu:0.1.0-live docker compose -f docker-compose.image.yml up -d
检查:
docker logs -f yzx-oa-sfu
curl http://127.0.0.1:4443/healthz
测试环境 OA 域名是 https://oa.live.educlouddata.com/ 时,Nginx 需要把 /ws_webrtc_sfu_api_test/ 反代到容器映射出来的 127.0.0.1:4443。
chat 通知,用于前端刷新业务聊天列表当前 OA 前端的 src/utils/sfu/urlFactory.js 里写死了域名和路径。服务部署好后,建议把它改成环境变量:
const baseUrl = import.meta.env.VITE_SFU_WS_URL || `wss://${window.location.hostname}/ws_webrtc_sfu_api`
const url = `${baseUrl}/?roomId=${roomId}&peerId=${peerId}`
对应 .env.*:
VITE_SFU_WS_URL='wss://oa.qbjjyyun.net/ws_webrtc_sfu_api'
测试环境 oa.live.educlouddata.com 对应:
VITE_SFU_WS_URL='wss://oa.live.educlouddata.com/ws_webrtc_sfu_api_test'