Sofya Developers

Como subir um servidor real para testar

Como subir um servidor real para testar

Pergunta: "como eu subo um servidor real pra testar?"

Pré-requisitos: Docker instalado, e um checkout de plat.sofya.event-rooms como irmão deste repo:

qr-code-related/
├── sofya.sdk/                 (este repo)
└── plat.sofya.event-rooms/

Se o seu checkout usa outro layout, ajuste build.context em harness/docker-compose.allowed.yml (e .blocked.yml).

Subir

cd harness
docker compose -f docker-compose.allowed.yml up --build

Isso sobe Redis + duas réplicas do backend (ws://localhost:8080/ws e ws://localhost:8081/ws), com ALLOWED_EVENTS=sofya.protocol — o único nome de evento que este SDK reserva no fio. As duas réplicas compartilham o mesmo Redis: uma sala criada em uma é alcançável pela outra.

Derrubar:

docker compose -f docker-compose.allowed.yml down -v

Verificar que subiu

curl http://localhost:8080/health

Pré-requisito de deploy: sofya.protocol liberado

A lib multiplexa handshake e todos os eventos de app dentro de um único nome de evento no fio, sofya.protocol (nunca o nome do seu evento de contrato diretamente) — é assim que a whitelist do deploy (ALLOWED_EVENTS) fica de tamanho 1 e constante, independente de quantos eventos o seu contrato declara. Se o deploy não liberar esse nome, o handshake nunca fecha — a lib detecta isso (event_not_allowed na sonda de conexão, ver erros.md) em vez de travar em silêncio, mas o requisito de ambiente continua sendo seu: confirme ALLOWED_EVENTS no deploy real do mesmo jeito que confirma aqui.

Para ver essa detecção acontecer de propósito, contra o servidor real (não é o caminho normal de desenvolvimento — é a prova de que a detecção funciona):

cd harness
docker compose -f docker-compose.blocked.yml up --build

Essa variante sobe com ALLOWED_EVENTS=transcription (sem sofya.protocol) — qualquer host/guest que conectar aqui recebe o erro de deploy mal configurado citando allowed: ["transcription"].

Credencial de transporte local

O servidor exige ROOM_AUTH_SECRET para aceitar a credencial de transporte via HMAC. As duas variantes do harness já sobem com um valor fixo de desenvolvimento (local-development-secret-change-me) — nunca um segredo real, nunca usado fora deste harness local. Qualquer string não vazia serve como credential de host/guest contra este harness (o servidor ecoa o subprotocolo sem validar o conteúdo — ver seguranca.md para o que isso significa em produção).

Last updated on

On this page