Fórum DataSnap Delphi 2010 -> Notificar clientes #431689

31/12/2012

0

Boa tarde a todos, e já de antemão, Feliz 2013

Esta e a primeira mensagem que eu estou colocando no forum, estou estudando Datasap, e estou com a seguinte duvida

É possivel disparar algum tipo de notificação/mensagens, do server para os clientes ?

Ex: Supondo que o preço do produto for atualizado, no server é possivel monitorar isso, no server tenho controle de todas as estações conectadas, consigo disparar um evento, notificação, ou mensagem para as estações ?

Seria algo assim, uma estação se inscreveria para receber determinado evento, e ai a partir disso o server toda vez que ocorrer aquele evento ela receberia uma mensagem para executar alguma ação.

Uma gambiarra seria controlar isso pelo banco de dados, e no cliente, um timer dando refresh em um clientdataset, mas acho que sacrificaria a performance
Valdemir Sanches

Valdemir Sanches

Responder

Post mais votado

07/01/2013

Oi Valdemir,

Eu fiz algo parecido com o que você está desejando, talvez não seja a melhor forma para o que você está querendo mas lá vai a minha sugestão.

Eu criei uma tabela (física mesmo no banco), com as notificações a serem exibidas para os usuários:

Dica de alguns campos básicos

id_usuario
data_msg
texto_msg
data_limite_exibicao

O que eu faço é controlar um timer na aplicação cliente, que de tempos em tempos (configurado) consulta o servidor de aplicações invocando um método que resulta um "data" de um clientdataset, onde do lado cliente eu trato e exibo as mensagens de acordo com a necessidade.

A vantagem que eu vejo em fazer dessa forma é que mesmo o usuário não estando conectado ao sistema no momento da entrada do produto ou qualquer outro evento que deseje tratar ele poderá ser avisado assim que entrar no sistema.

Espero ter ajudado.

Qualquer duvida é só falar.



Rodrigo Alves.



Integral Ltda

Integral Ltda
Responder

Gostei + 1

Mais Posts

31/12/2012

Marco Salles

geralmente isto seconsegue com caalback

Veja este exemplo se te ajuda


http://www.andreanolanusse.com/pt/utilizando-callback-em-datasnap-2010/#respond

[]sds
Responder

Gostei + 0

06/01/2013

Valdemir Sanches

Pior que não, callback, pelo que eu entendi é por exemplo quando vc manda executar algo no servidor .. Ex chamar a procedure no servidor FechamentoMes(), esta procedure demora 2 horas para terminar, então a maquina do cliente irá ficar "congelada" sem resposta por este tempo e ai enfim provavelmente o usuario irá resetar o pc pensando que o sistema travou.

Neste caso usando callback, de tempos em tempos, vc pode mostrar ao usuario o progresso da operação.

Minha situação é a seguinte.... um exemplo simples....
Tenho no deposito uma estação para dar entrada em notas, e também separar os produtos para entrega, mas a prioridade é separar produtos para entrega e dar a entrada apenas quando estiver com tempo disponivel.
Minha ideia é, como existe o servidor de dados, ele consegue monitorar sempre que incluir no banco de dados um novo pedido para entrega.
Ele pode automaticamente avisar a estação, e a estação irá abrir uma janela para quem estiver usando o micro, pode-se ter 1 ou mais estações no deposito, e todas serão avisadas.

Vi que daria para fazer isso usando 2 camadas, usando o firebird e trabalhando com eventos.
Mas gostaria de implementar isso direto pela a minha aplicação já em 3 camadas.
Responder

Gostei + 0

07/01/2013

Valdemir Sanches

Realmente, é uma forma de resolver com certeza
e vc provavelmente filtra pelo id do usuário, desta forma não fica muito pesado o trafico na rede.

Tinha pensado em algo semelhante se não encontrar de outra forma

obrigado
Responder

Gostei + 0

07/01/2013

Integral Ltda

Tenho um campo para controlar se o aviso já foi lido ou não, isso deixa mais livre ainda, alem da possibilidade de apagar o registro apos a leitura.
Responder

Gostei + 0

08/01/2013

Daniel Santos

Valdemir, para isso voce deve usar o Callback, ele nao serve so para isso que voce citou acima, tambem serve para troca de mensagem entre cliente e servidor.

Voce deve usar o componente TDSCLientCallbackManager para se registrar ao servidor, e atravez do comando

Broadcast ou notify voce pode mandar mensagens para um grupo especificou ou para algum cliente em especial ainda tendo a vantagem de ser uma comunicação assincrona.
Responder

Gostei + 0

08/01/2013

Valdemir Sanches

Daniel obrigado
era justamente isso que eu estava procurando
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar