- Add Next.js app structure with base configs, linting, and formatting - Implement LiveKit Meet page, types, and utility functions - Add Docker, Compose, and deployment scripts for backend and token server - Provide E2E and smoke test scaffolding with Puppeteer and Playwright helpers - Include CSS modules and global styles for UI - Add postMessage and studio integration utilities - Update package.json with dependencies and scripts for development and testing
3.1 KiB
3.1 KiB
broadcast-panel - Proxy / Nginx & Studio flow
Este README explica cómo configurar el proxy (Nginx) para que las rutas de API de tokens (/api/session) se enruten al backend-api (token server), cómo probar el flujo "Entrar al estudio" y cómo ejecutar la automatización de prueba (Playwright / browserMCP).
Archivo de ejemplo de Nginx
- El archivo
packages/broadcast-panel/nginx.confya contiene una ubicación para/api/session:
location ~ ^/api/session(/.*)?$ {
proxy_pass http://backend-api:4000$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 5s;
proxy_read_timeout 20s;
}
Importante:
- Ese
proxy_passfunciona si Nginx se ejecuta en la misma red Docker ybackend-apies resolvible como nombre de servicio. En el proxy público (easypanel/traefik/nginx del host) debes apuntar ahttp://127.0.0.1:4000o al host/IP donde correbackend-api.
Ejemplo de bloque server para proxy público (host):
upstream backend_api {
server 127.0.0.1:4000; # o la IP/host real del token server
}
server {
listen 80;
server_name avanzacast-servertokens.bfzqqk.easypanel.host;
location ~ ^/api(/.*)?$ {
proxy_pass http://backend_api$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
try_files $uri $uri/ /index.html;
}
}
Probar el flujo del estudio (manualmente)
- Crear sesión en token server:
curl -v -X POST 'https://avanzacast-servertokens.bfzqqk.easypanel.host/api/session' \
-H 'Content-Type: application/json' \
-d '{"room":"studio-live","username":"mcp-runner","ttl":300}' --max-time 15
- Debes recibir JSON con
studioUrl(oid+token). Copia lastudioUrly ábrela en un navegador. - En la UI del broadcast-panel, en la ventana del estudio, debería aparecer "Esperando token..." y cuando el postMessage/auto-connect se realice, verás "Token recibido desde Broadcast Panel" y/o "Conectado".
Automatizar con browserMCP / Playwright
- Usa el script
run_studio_flow.mjs(puedo generarlo y ejecutarlo) que:- Llama por POST al token-server para crear sesión,
- Abre la
studioUrly pulsa los botones "Conectar" / "Entrar" / "Ir en vivo" según sea necesario, - Espera la confirmación en el DOM y devuelve screenshot + logs.
Script Playwright (resumen):
// POST /api/session -> parse JSON
// goto(studioUrl)
// click('text=Conectar' | 'text=Entrar al estudio' | ...)
// wait 2s
// get document.body.innerText
// screenshot
¿Quieres que cree y ejecute el script Playwright ahora?
- Si confirmas: ejecutaré el POST y el flujo en browserMCP y te devolveré screenshot + logs.
Notas finales
- Si
curldevuelve HTML en vez de JSON es señal de que el proxy público no enruta/apial token server. Revisa la configuración del proxy y aplica las reglas mostradas en este README.