Pular para o conteúdo principal

Presença — REST e WebSocket

Módulo: PresenceModule
Estado: sessões em memória (Map) — reinício do processo limpa sessões
Tag REST: Presença (utilizadores ativos / DB_DEFAULT_PSTGS)

Catálogo: catalogo-completo.md §10. Runbook: runbooks/presenca.md.


REST — /api/v1/presence

Controller: PresenceV1Controller
Auth: Bearer

MétodoRotaDescriçãoNotas
GET/active-usersSessões ativas no tenant
GET/active-users-globalTodas as sessõesadmin
GET/online-count/main-companiesContagem — empresas mãe
GET/online-count/sub-companiesContagem — sub-empresas
GET/online-count/aggregated-by-parentRede mãe + filhas

WebSocket — namespace /presence

Gateway: PresenceGateway
Path Socket.IO: /socket.io (padrão)
Auth handshake: { token: "<JWT>" }

Salas

SalaQuem
tenant:<tenantId>Utilizadores do tenant
admin:observerAdmins (não contam como online)

Eventos (ex.)

  • presence:sync
  • presence:join
  • presence:leave
  • presence:error
  • Cliente pode enviar presence:status (@SubscribeMessage)

Integração

  • default-crm assina JWT com o mesmo JWT_SECRET (ou JWT_EXTERNAL_SECRETS).
  • default_crm-front abre o socket após login (centralPresenca).
  • Detalhe end-to-end: docs/ENTENDIMENTO.md.