2017-05-18 3 views
1

내 허브 클래스에 대한 프록시를 만드는 .NET 클라이언트가 있습니다. 해당 허브를 호스팅하는 서버가 충분히 오랫동안 중단되면 클라이언트는 연결이 끊긴 상태가됩니다. 허브 메소드를 호출하기 전에 프록시가 연결이 끊긴 상태인지 확인하고 허브 메소드를 호출 한 다음 연결이 끊긴 상태 인 경우 오류를 catch하려고합니다.SignalR IHubProxy 인터페이스가 클라이언트의 연결이 끊긴 상태임을 나타내는 속성을 노출합니까?

Visual Studio에서 디버깅하는 동안 IHubProxy 개체의 기본 속성이 현재 상태를 나타내는 State임을 알 수 있습니다. 연결이 잘된 경우 Connected라고 표시되며 연결이 끊어지면 Disconnected라고 표시됩니다. 그러나이 속성에 액세스 할 수 없습니다.

말할 방법이 있는지 아는 사람이 있습니까? 이상적으로 난 그냥 같은 것을 할 싶습니다 나는 HubConnection 클래스는 내가 원하는 무엇을 깨달았

if (hubProxy.State == ConnectionState.Disconnected) 
{ 
    this.AttemptReconnection(); 
} 
if (hubProxy.State == ConnectionState.Connected) 
{ 
    await hubProxy.Invoke("MyMethod", myMethodArgs); 
} 

답변

1

. 나는 그 클래스에 대해 잊어 버렸습니다. 왜냐하면 저는 허브에 대한 프록시를 생성하기위한 프록시 서비스 클래스를 특별히 가지고 있었기 때문에 클라이언트가 허브 메소드를 호출하기 위해 사용했던 것이기 때문에 단지 IHubProxy 속성 만 공개했습니다. HubConnection 속성을 노출하여 클라이언트는 상태를 확인할 수 있습니다.

private void ConnectToHub() 
{ 
    try 
    { 
     // this is a method in the proxy service class that tries to connect to the hub 
     // it returns true if it was able to connect successfully 
     this.connected = hubProxyService.AttempConnectionToHub(); 
     if (this.connected) 
     { 
      this.hubProxy = hubProxyService.HubProxy; 
      this.hubConnection = hubProxyService.HubConnection 
     } 
    } 
    catch 
    { 
     this.connected = false; 
    } 
} 

private void MyMethodThatInvokesHubMethod() 
{ 
    // Do some stuff 
    // ... 
    // ... 
    // ... 
    if (this.hubConnection.State == ConnectionState.Disconnected) 
    { 
     this.ConnectToHub(); 
    } 
    if (this.hubConnection.State == ConnectionState.Connected) 
    { 
     await this.hubProxy.Invoke("MyHubMethod", hubMethodArgs); 
    } 
} 
:이 답변의 완전성을 위해서

이 내 클라이언트 코드의 베어 뼈가 모습입니다