Array
(
)

Servidor DataSnap

Miudo
   - 24 jan 2006

olá pessoal...
Eu estou utilizando MIDAS / DataSnap e estou tendo um pequeniníssimo problema.
eu quero saber se tem alguma forma de saber, pelo servidor, se determinado cliente está desconectato.
Pelo Destroy do TRemoteDataModule, só se sabe que houve uma desconexão se o cliente desconectou-se normalmente.
Se faltar energia no cliente este evento não ocorre. Além de não ser possível identificar quem se desconectou.

se alguem puder me ajudar...
agradecido


Aroldo Zanela
   - 24 jan 2006

Colega,

Use uma rotina de ´ping´ para servir de ´cão de guarda´ e avisar o servidor que uma estação não responde. Tem isso pronto na Web, mas se não encontrar, informe que eu te passo o código.


Aroldo Zanela
   - 24 jan 2006

Colega,

Use uma rotina de ´ping´ para servir de ´cão de guarda´ e avisar o servidor que uma estação não responde. Tem isso pronto na Web, mas se não encontrar, informe que eu te passo o código.


Thomaz_prg
   - 24 jan 2006

Se você não tiver problemas com o banco de dados (limite de conexões e outros), você pode deixar seu servidor como Single Instance, desta forma, se o cliente cair, o servidor é tirado da memória, pois para cada cliente, é criada uma instância do servidor.
Ou então usar socket para que, se o cliente (ClientSocket) cair, ele finaliza a transação.
Ou então, se o componente que você estiver usando para tratar as transações (IbTransaction, MdoTransaction) tiver o controle do tempo que a transação está aberta, você pode definir um tempo (na propriedade IdleTimer, que é definida em Milissegundos) para que, se der esse tempo, a transação seja finalizada.
Ou também, se você usa pooling de objetos, pode definir um tempo para que sejam destruídos.