Pergunta

Eu estou olhando para detectar a perda de conexão local. Existe um meio de fazer isso, como acontece com os eventos sobre os componentes CoreLabs?

Graças

EDIT: Desculpe, eu vou tentar ser mais específico: Atualmente estou projetando um protótipo usando DataSnap 2009. Então eu tenho um thin client, um aplicativo de servidor sem estado e um servidor de banco de dados.

O que eu seria capaz de fazer é detectar e perda de conexão cabo (conectividade com a Internet) entre o cliente eo aplicativo de servidor para lidar com isso de forma adequada, ou seja: Exibe uma mensagem de erro informativo para o usuário ou para detectar um desligamento do servidor para silenciosamente redirecionar em outro servidor de aplicativos.

Em 2-tier I usado para gerenciar isso com componentes ODAC, o TOraSession tem alguns eventos para lidar com estas questões.

Foi útil?

Solução

Normalmente não há nenhum evento disparado quando uma conexão é quebrada, a menos que uma declaração é disparado contra o banco de dados. Isso ocorre porque não há nenhuma maneira de saber uma perda de conexão a menos que haja algum tipo de é-alive ping acontecendo.

Muitas estruturas de verificar se uma conexão ainda é válido, fazendo uma pequena consulta contra o servidor. Poderia estar recebendo a hora de um servidor. Especialmente em um ambiente de pool de conexão.

Você pode implementar uma conexão função de verificação em sua aplicação em alguns dos eventos de banco de dados (BeforeExecute?). Ou fazer um timer que verifica a cada 10 segundos.

Outras dicas

gerar um segmento no cliente que envia periodicamente alguns RPC 'Ping' ou comandos 'Pulsação' para o servidor.

  • Se isto falhar, o cliente sabe que algo aconteceu com a conexão

  • Se o servidor não ouvir mais o cliente por algum período de tempo (por exemplo, duas vezes o intervalo de pulsação), ele pode concluir que o cliente desconectado, no entanto, isso requer um servidor stateful (e seu projeto é apátrida por isso exigiria o processamento de eventos em um sistema secundário, que pode ser alimentado através de uma fila de mensagens)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top