none
WCF usando comunicação Duplex PollingDuplex RRS feed

  • Pergunta

  • Boa Tarde,

    Estou usando WCF com callback preciso saber quando um cliente conectado ao WCF fica offline ?

    tenho a seguinte estrutura

     

    SynchronizedCollection<IWebChatCallBack> _Clientes = new SynchronizedCollection<IWebChatCallBack>();
    
    
    /*chamada do método Registrar*/
    _Clientes.Add(OperationContext.Current.GetCallbackChannel<IWebChatCallBack>(););
    
    /*preciso de algo parecido com esse*/
    foreach(IWebChatCallBack Cli in _Clientes)
    {
         if (Verifica(Cli) == false)
         { _Clientes.Remove(Cli); }
    }
    


     Como implementar a Verifica() ??

     

    Att Obrigado.

    sexta-feira, 9 de setembro de 2011 17:17

Respostas

  •  

    Bom Dia ,

    Pessoal.

     

    Fiz algumas pesquisas na internet e depois de muito pesquisar consegui a solução. segue o código para verificar se a conexão esta ativa ainda.

     

     

    foreach (IWebChatCallBack _Cli in _Clientes)
    {
    	var clientCallbackCommunicationObject = ((ICommunicationObject)_Cli);
            EventHandler faultedHandlerRequest = (o, s) => _ClientesRemover.Add(_Cli);
            EventHandler closedHandlerRequest = (o, s) => _ClientesRemover.Add(_Cli);
            clientCallbackCommunicationObject.Closed += faultedHandlerRequest;
            clientCallbackCommunicationObject.Faulted += closedHandlerRequest;
    }
    
    foreach (IWebChatCallBack _RCli in _ClientesRemover)
    {
    	foreach (IWebChatCallBack _Cli in _Clientes)
    	{
    		if (_Cli == _RCli)
    		{ _Clientes.Remove(_Cli); break; }
    	}		
    }
    

    Att.


    segunda-feira, 12 de setembro de 2011 11:35