Usuário com melhor resposta
Enviar Mensagem do Servidor

Pergunta
-
Pessoal, preciso enviar uma mensagem do servidor para o cliente. Como posso recuperar os clientes conectados e enviar a mensagem para aquele que preciso?
Desculpe as perguntas, é que estou iniciando em WCF.
Henrique Fávaro Tâmbalo - Se a resposta ajudou, marque como resposta!
Respostas
-
Boas Henrique,
Tendo um método Subscribe e Unsubscribe. No método Subscribe você mantém a coleções de callbacks, e quando algo acontecer, você percorre essa lista, invocando cada callback. Um exemplo:
private Dictionary<string, ITuaInterfaceDeCallback> _subscribers = new (...);
private void Subscribe()
{
//verificar se o elemento já não está dentro do dicionário!
this._subscribers.Add("IdDoCliente", OperationContext.Current.GetCallbackChannel<ITuaInterfaceDeCallback>());
}
... depois, na tua regra que deve notificar os clientes, tudo o que precisa fazer é invocar os callbacks que estão armazenados no membro _subscribers:
foreach (var callback in this._subscribers)
callback.Value.TeuMetodo(parametros);
http://www.israelaece.com- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 18 de março de 2010 15:40
- Marcado como Resposta Henrique SJ Rio Preto segunda-feira, 22 de março de 2010 11:52
Todas as Respostas
-
Boas Henrique,
Tendo um método Subscribe e Unsubscribe. No método Subscribe você mantém a coleções de callbacks, e quando algo acontecer, você percorre essa lista, invocando cada callback. Um exemplo:
private Dictionary<string, ITuaInterfaceDeCallback> _subscribers = new (...);
private void Subscribe()
{
//verificar se o elemento já não está dentro do dicionário!
this._subscribers.Add("IdDoCliente", OperationContext.Current.GetCallbackChannel<ITuaInterfaceDeCallback>());
}
... depois, na tua regra que deve notificar os clientes, tudo o que precisa fazer é invocar os callbacks que estão armazenados no membro _subscribers:
foreach (var callback in this._subscribers)
callback.Value.TeuMetodo(parametros);
http://www.israelaece.com- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 18 de março de 2010 15:40
- Marcado como Resposta Henrique SJ Rio Preto segunda-feira, 22 de março de 2010 11:52
-
Israel,
Muito obrigado mais uma vez. Deu certo.
Fiz da seguinte forma:
Criei uma classe estatica e coloquei uma lista generia estatica também. Quando eu recebo a mensagem eu verifico se existe a Session ID na lista genérica, se não existir eu adiciono.
E quando eu preciso falar percorro a lista genérica e envio o callback.
Henrique Fávaro Tâmbalo - Se a resposta ajudou, marque como resposta!