El worker utiliza Cloudflare Durable Objects para el WebSocket en tiempo real. Cada «sala» de colaboración = 1 Durable Object con conexiones WebSocket persistentes. Los cambios se transmiten al instante (<1 segundo) a todos los colaboradores.
El servidor solo ve blobs cifrados con AES-256-GCM — sin conocimiento de los datos.
npm install -g wrangler
wrangler login
→ Abre el navegador, haz clic en «Allow»
cd worker/
wrangler kv namespace create ROOMS
→ El comando muestra un ID. Actualiza wrangler.toml:
[[kv_namespaces]]
binding = "ROOMS"
id = "TU_ID_AQUI"
wrangler deploy
→ Muestra la URL del worker: https://mg-sync.TU-SUBDOMINIO.workers.dev
curl "https://mg-sync.TU-SUBDOMINIO.workers.dev/room/test/presence?client=test1"
# Debe devolver: {"count":0}
La URL del worker ya está rellenada en MasterGantt (Configuración → Colaboración → Servidor). Para utilizar tu propio worker, sustituye la URL.
Tras modificar sync-worker.js:
cd worker/
wrangler deploy
Eso es todo — el despliegue tarda unos 15 segundos.
Cuenta Cloudflare : steevebecker
Subdominio : mastergantt.workers.dev
URL del worker : https://mg-sync.mastergantt.workers.dev
ID namespace KV : c2fe1889c94b4d55ad68f9d244bd812f
Plan : Workers Paid ($5/mes)
| Archivo | Función |
|---|---|
sync-worker.js | Worker principal + Durable Object SyncRoom |
wrangler.toml | Configuración de despliegue (KV, DO bindings) |
Cliente A (navegador) Cloudflare Worker Cliente B (navegador)
| | |
|-- WebSocket connect ------>| |
| |<-- WebSocket connect ----|
| | |
|-- WS: blob cifrado ------->| |
| DO broadcast |
| |---> WS: blob cifrado --->|
| | descifra + merge
| | |
| Componente | Plan gratuito | Workers Paid ($5/mes) |
|---|---|---|
| Solicitudes de Worker | 100k/día | 10M/día |
| Durable Objects | — | 0,15 $/millón de solicitudes |
| Mensajes WebSocket | — | 0,50 $/millón de mensajes |
| Lecturas KV | 100k/día | Ilimitadas |
| Escrituras KV | 1k/día | Ilimitadas |
Estimación realista: 10 usuarios activos × 8 h = ~0,05 $/día = ~1,50 $/mes de coste adicional.
Para utilizar sync.mastergantt.com:
sync.mastergantt.comProporciona la carpeta worker/ — ellos la despliegan en su propia cuenta de Cloudflare. El worker solo ve blobs cifrados, ningún dato en claro.
| Problema | Solución |
|---|---|
| 500 Internal Error | wrangler tail para ver los logs en tiempo real |
| WebSocket no se conecta | Comprueba que el plan sea Workers Paid (DO requerido) |
| Blobs no recibidos | Comprueba que los dos clientes estén en la misma sala/contraseña |
| «KV put limit exceeded» | Cambia al plan Paid o espera al reinicio diario |
| Fallo en el despliegue | wrangler login para renovar el token |
El servidor por defecto está listo para usar. Desplegar tu propio worker solo es útil para requisitos específicos de soberanía.
Descargar MasterGantt