c.Apps.Realtime(ctx, appID) abre um stream ao vivo dos logs, do status e dos eventos de sistema de uma aplicação e retorna um *squarecloud.Realtime. É um iterador: chame Next em um loop até que ele retorne um erro, e sempre chame Close.
ctx passado para Realtime governa o stream inteiro: Next não recebe argumentos. Para interromper, a partir de outra goroutine, um loop bloqueado em Next, cancele esse ctx.
Eventos
TodoRealtimeEvent tem Event, Data (o texto bruto do frame) e ID (o id do último evento, "" se não houver).
A struct Status
Encerrando o stream
Next retorna io.EOF quando:
- o servidor fecha a conexão de forma limpa (cada conexão dura até 10 minutos);
- o servidor envia
REALTIME_DISCONNECTED(o evento é entregue primeiro, depoisio.EOF); - você chamou
Close.
ctx passado para Realtime é cancelado ou seu prazo expira, Next retorna o ctx.Err() puro (context.Canceled ou context.DeadlineExceeded), não um *APIError. Para sair do loop por conta própria, basta usar break: o Close adiado com defer libera a conexão.
Para continuar acompanhando além de 10 minutos, chame Realtime novamente quando o loop terminar.
Reconexão
Uma conexão perdida, ou o servidor delegando a reconexão ao cliente (REALTIME_RECONNECT), reabre o stream sozinho:
- até 3 vezes seguidas; qualquer evento
logsoustatuszera a contagem; - cada reabertura ocorre pelo menos 5,5 s após a abertura anterior, para respeitar o ritmo da API de uma abertura a cada 5 segundos por aplicação.
Status mesclado sobrevive às reconexões. Após 3 reconexões falhas, Next retorna um *APIError com NETWORK_ERROR (status 0).
Limites e erros
- 5 conexões simultâneas por conta e 30 por aplicação, somando todos os usuários. Ultrapassar resulta em 429
REALTIME_MAX_CONNECTIONSouREALTIME_MAX_CONNECTIONS_APP. - O status HTTP é verificado antes do streaming, então esses erros (e o 404 para uma aplicação desconhecida) são retornados pelo próprio
Realtime, antes do primeiroNext. - Quando o
ctxnão tem prazo, o prazo deWithTimeoutcobre apenas a abertura, até os headers da resposta chegarem (TIMEOUTse não chegarem). O stream em si não tem prazo além doctx.
Próximos passos
Snapshots
Faça backup e restaure aplicações e bancos de dados.
Referência da API de tempo real
O endpoint REST por trás deste stream.
Logs pela CLI
O mesmo stream pelo terminal.

