Domanda

Sto cercando di rilevare la perdita di connessione locale. C'è un mezzo per farlo, come con gli eventi sui componenti Corelabs?

Grazie

EDIT: Siamo spiacenti, ho intenzione di cercare di essere più specifico: Attualmente sto progettando un prototipo utilizzando DataSnap 2009. Quindi ho un thin client, un'applicazione server senza e un server di database.

Quello che vorrei essere in grado di fare è quello di rilevare e gestire la perdita di connessione (connettività Internet) tra il client e l'applicazione server per gestire in modo appropriato, vale a dire: Visualizza un messaggio di errore informativo per l'utente o per rilevare un arresto del server a silenziosamente reindirizzare su un altro server app.

In 2-tier che ho usato per gestire che, con i componenti ODAC, il TOraSession hanno alcuni eventi per gestire questi problemi.

È stato utile?

Soluzione

In genere non v'è alcun evento sparato quando una connessione viene interrotta, a meno che una dichiarazione è sparato contro la base di dati. Questo è perché non c'è modo di sapere una perdita di connessione a meno che non ci sia una sorta di Is-alive pinging in corso.

Molti quadri controllare se una connessione è ancora valida facendo una piccola query sul server. Potrebbero ottenere l'ora da un server. Soprattutto in un ambiente di pool di connessioni.

È possibile implementare una connessione funzione di check-in l'applicazione in alcuni degli eventi del database (BeforeExecute?). O fare un timer che controlla ogni 10 secondi.

Altri suggerimenti

genera un thread sul client che invia periodicamente un po RPC 'ping' o 'Heartbeat' comandi al server.

  • se questo fallisce, il cliente sa che è successo qualcosa alla connessione

  • se il server non sente più il cliente per un certo periodo di tempo (ad esempio, due volte l'intervallo di heartbeat), egli può concludere che il client disconnesso, ma questo richiede un server stateful (ed il vostro disegno è senza stato quindi richiederebbe elaborazione di eventi in un sistema secondario, che può essere inserito attraverso una coda di messaggi)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top