Fórum DataSnap Delphi 2010 -> Notificar clientes #431689
31/12/2012
0
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
Curtir tópico
+ 0Post mais votado
07/01/2013
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
Gostei + 1
Mais Posts
31/12/2012
Marco Salles
Veja este exemplo se te ajuda
http://www.andreanolanusse.com/pt/utilizando-callback-em-datasnap-2010/#respond
[]sds
Gostei + 0
06/01/2013
Valdemir Sanches
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.
Gostei + 0
07/01/2013
Valdemir Sanches
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
Gostei + 0
07/01/2013
Integral Ltda
Gostei + 0
08/01/2013
Daniel Santos
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.
Gostei + 0
08/01/2013
Valdemir Sanches
era justamente isso que eu estava procurando
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)