Skip to main content
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.
O 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

Todo RealtimeEvent 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, depois io.EOF);
  • você chamou Close.
Quando o 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 logs ou status zera 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.
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_CONNECTIONS ou REALTIME_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 primeiro Next.
  • Quando o ctx não tem prazo, o prazo de WithTimeout cobre apenas a abertura, até os headers da resposta chegarem (TIMEOUT se não chegarem). O stream em si não tem prazo além do ctx.

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.