2014-11-18 4 views
0

Windows Phone 8 클라이언트가 있습니다.WP8에서 SignalR을 사용하여 고생했습니다.

SignalR을 사용하여 서버와 통신하고 있습니다.

내 서버의 메시지로 업데이트하려면 UI가 필요합니다.

나는 중단 점을 설정하고 HTML5 클라이언트를 사용 했으므로 서버 부분이 정확하다는 것을 알고 있습니다.

문제는 WP8

내가 제대로 일을하고 있다면 그래서 나는 확실하지 않다 전에 내가 WP8을 사용한 적이과 함께합니다.

나는이있다 :

public MainPage() 
    { 
     this.InitializeComponent(); 
     this.NavigationCacheMode = NavigationCacheMode.Required; 

      connection.Start().ContinueWith(task => 
     { 
      if (task.IsFaulted) 
      { 
       UpdateConnectionState("Not Connected");    
      } 
      else 
      { 
       UpdateConnectionState(string.Format("Success! Connected with client connection id {0}", connection.ConnectionId)); 
       hubuserid = connection.ConnectionId; 
       //not important for now LogIn(); 
      } 
     }); 

     connection.Received += data => 
     { 
      UpdateConnectionState(data); 
     }; 
     connection.Error += ex => 
     { 
      UpdateConnectionState(string.Format("An error occurred {0}", ex.Message)); 
     }; 
     connection.Closed +=() => 
     { 
      UpdateConnectionState(string.Format("Connection with client id {0} closed", connection.ConnectionId)); 
     }; 
     connection.Reconnected +=() => 
     { 
      UpdateConnectionState("The connection was re-established"); 
     }; 
    } 

내 UI는 처음에 연결이 된 상태.

이제 서버에서 메시지가 수신됩니다. 나는 또한 이것을 시도했다 :

private async void UpdateTime(string data) 
    { 
     await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
     { 
      txtInfo.Text = data; 
     }); 
    } 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     this.NavigationCacheMode = NavigationCacheMode.Required; 

     proxy.On<string>("internetUpTime", UpdateTime); 

     connection.Start().ContinueWith(task => 
     { 
      if (task.IsFaulted) 
      { 
       UpdateConnectionState("Not Connected");    
      } 
      else 
      { 
       UpdateConnectionState(string.Format("Success! Connected with client connection id {0}", connection.ConnectionId)); 
       hubuserid = connection.ConnectionId; 
      } 
     }); 

     //connection.Received += data => 
     //{ 
     // UpdateConnectionState(data); 
     //}; 
     connection.Error += ex => 
     { 
      UpdateConnectionState(string.Format("An error occurred {0}", ex.Message)); 
     }; 
     connection.Closed +=() => 
     { 
      UpdateConnectionState(string.Format("Connection with client id {0} closed", connection.ConnectionId)); 
     }; 
     connection.Reconnected +=() => 
     { 
      UpdateConnectionState("The connection was re-established"); 
     }; 
    } 

올바른 방법과 내 코드의 잘못된 점은 어느 것입니까? 서버에서 호출을 처리 할

감사

+0

문제는 정확히 어디에서 발생합니까? WP8 코드에 중단 점을 넣으면 어떻게됩니까? –

+0

안녕하세요, 회신 해 주셔서 감사합니다. 그것은 바로 그것입니다. 연결이 이루어지는 동안 내 서버에서 메시지를받을 수 없습니다. 서버가 그 hubid에게 메시지를 보내고 있지만 클라이언트는 그것을받지 못한다는 것을 알고 있습니다. 첫째, 어떤 코드를 사용해야합니까? 웹에서 찾은 코드에서 2 가지 방법을 나열했습니다. 수신 종료 지점의 중단 점이 절대 실행되지 않습니다. –

+0

시작을 호출 한 후 코드가 계속 작업을 입력 했습니까? –

답변

1

다음 구문을 사용합니다

: PckType 다음 코드와 함께 전송 유형의 서버에 해당되는 유형이

proxy.On<PckType>("broadcastMessage", msg => {}); 

Clients.Caller.broadcastMessage(pck); 

SignalR은 클라이언트에서 호출 된 메소드가 서버에 존재해야하며 그 반대의 경우도 마찬가지임을 나타내는 RPC 서비스로 작동합니다. 물론 이것은 Hub 접근에 대해서만 적용됩니다.

+0

건방진 요청이지만 VM웨어에서 ide를 실행하는 경우 wp8 에뮬레이터를 실행하는 방법을 알고 있습니까? –

+0

불행히도, 아니오. 평행선을 사용하고 있으며 거기에있는 매력처럼 작동합니다. –

+0

안녕하세요, 그건 괜찮습니다 :) 내가 건방진이라고 말한 것처럼. 그러나 어떤 맥락에서 평행선을 의미합니까? –

관련 문제