none
Enviar Mensagem do Servidor RRS feed

  • 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!
    quinta-feira, 18 de março de 2010 13:28

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
    quinta-feira, 18 de março de 2010 13:35
    Moderador

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
    quinta-feira, 18 de março de 2010 13:35
    Moderador
  • 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!
    segunda-feira, 22 de março de 2010 11:54