Ir para o conteúdo

Heartbeats de licença e verificação offline

As duas opções ficam nas políticas de licença, mas definem coisas diferentes: frequência de contato online e duração de uso sem alcançar o servidor.

Intervalo: frequência de validação

Defina Intervalo de heartbeat (segundos) como 600, o SDK envia um heartbeat aproximadamente a cada 10 minutos durante a execução. Cada sucesso obtém as regras atuais e atualiza o cache local da licença.

Informe 600–86400 segundos. Informe 0 desativa os heartbeats agendados. O aplicativo ainda pode verificar ou atualizar manualmente. O agendamento adiciona atraso aleatório de 0–10%; o intervalo nunca fica abaixo de 600 segundos.

Com licença vinculada ao dispositivo e cache válido, o acesso é restaurado e atualizado online em segundo plano, mesmo sem temporizador. Licenças somente online ou flutuantes aguardam o servidor.

Tempo offline: quanto usar sem o servidor

Modo offline tem três opções e não altera o intervalo de heartbeat.

Permitir por duração definida
Com 24 horas, o cache assinado vale até 24 horas desde a última validação online bem-sucedida. O software funciona durante quedas de rede ou falhas temporárias nesse período. Depois, precisa validar online.
Fallback offline não permitido
A inicialização exige sucesso no servidor; cache em disco não libera acesso após falha. A assinatura curta obtida em execução vale no máximo max(10, 心跳间隔) segundos; o aplicativo deve continuar validando e verificando permissões.
Permitir acesso offline permanente
A assinatura local pode ser usada por longo prazo, mesmo sem rede. Uma licença de 30 dias continua expirando em 30 dias; offline permanente não torna a licença perpétua.

A API usa offline_mode representa estas três opções, na ordem limited, none, permanent. Com duração offline definida,offline_seconds é 1–31536000 segundos; use 0 nos outros dois modos.

Como funcionam estas combinações?

Heartbeat / configurações offlineComportamento real
10 minutos / 24 horasValide a cada 10 minutos online. Offline, use por até 24 horas desde a última validação bem-sucedida
10 minutos / offline permanenteTenta heartbeat a cada 10 minutos, atualiza regras ao conseguir e usa assinatura válida sem conexão.
0 / offline permanenteCom cache válido, inicie sem requisições agendadas. Validação ou atualização explícita ainda acessa o servidor
0 / 24 horasSem heartbeat agendado, mas cache expira. O aplicativo agenda validação; desativar não estende tempo offline.

Defina tempo offline maior que o intervalo. Com heartbeat por hora e só 1 minuto offline, a assinatura expira antes do próximo; o aplicativo precisa validar separadamente.

Alterar a política atualiza licenças existentes?

Sim. Salvar sincroniza atomicamente limites, recursos, cotas, modelo, manutenção e versões em cada licença vinculada não revogada. Não é preciso selecionar cada uma novamente.

A sincronização preserva tipo, dias, primeira ativação, vencimento, cliente, uso e extensão de manutenção. O tipo da política vale apenas para novas licenças e não torna perpétua uma licença de 30 dias.

Se houver dispositivos ou sessões ativos ao trocar o modelo, ou se o novo limite for menor que o uso atual, salvar retorna ACTIVE_DEVICES_CONFLICT, sem atualizar parcialmente a política ou licenças. Libere os dispositivos em conflito e salve novamente.

Após salvar, licenças vinculadas antigas e novas usam as regras na próxima ativação, validação ou heartbeat bem-sucedido. O SDK troca o cache assinado. O mesmo Idempotency-Key ainda retorna o resultado original.

Um dispositivo offline mantém as regras assinadas existentes. Reconectar não atualiza o cache por si só; uma requisição precisa ter sucesso. O aplicativo pode atualizar quando a rede voltar.

Aplicar política ainda tem uma função.

Para mover licenças para outra política, selecione-as e visualize com Aplicar política. Ao editar a política atual, basta salvar para sincronizar.

Atualização online explícita

Esses métodos sempre tentam o servidor, mesmo com offline permanente e heartbeat desligado. Sucesso atualiza a assinatura. Falha de rede informa erro mas mantém cache válido. Revogação ou liberação explícita apaga o cache.

IdiomaComo chamar
Goclient.RefreshOnline(ctx)
Javaclient.refreshOnline()
Cln_refresh_online(client)
C++client.RefreshOnline()
C#await client.RefreshOnline()
Pythonclient.refresh_online()
JavaScriptawait client.refreshOnline()

Uma atualização bem-sucedida conta como uma ativação API. Se a política ativar heartbeat antes desligado, chame StartHeartbeat da linguagem para iniciar o agendamento. Offline, o dispositivo não recebe revogação ou liberação.