2016-09-30 8 views
1

私は、プログラムの1つのインスタンスがSignalR Self-Host経由で他のインスタンスと通信できるWPFアプリケーションを開発しています。プログラムがどのユーザーが通知を送信するかを知るために、グループにどのように、どこに参加するのか分からないことを除いて、すべてうまくいきます。どんな助けもありがとう。ここで は私のサンプルコードです:SignalRでグループに参加する

//client side 
private async void ConnectAsync() 
{ 
    Connection = new HubConnection(ServerURI); 
    Connection.Closed += Connection_Closed; 
    HubProxy = Connection.CreateHubProxy("MyHub"); 

    //Handle incoming event from server: use Invoke to write to console from SignalR's thread 
    HubProxy.On<string, string>("AddMessage", (name, message) => 
     this.Dispatcher.Invoke(() => RichTextBoxConsole.AppendText(String.Format("{0}: {1}\r", name, message)) 
     ) 
    ); 
    try 
    { 
     await Connection.Start(); 
    } 
    catch (HttpRequestException) 
    { 
     StatusText.Content = "Unable to connect to server: Start server before connecting clients."; 
     //No connection: Don't enable Send button or show chat UI 
     return; 
    } 

    HubProxy.Invoke<string>("JoinGroup", "foobar").Wait(); // Do I have to do it here? 

} 
//serverside 
public class MyHub : Hub 
{ 
    public void Send(string name, string message) 
    { 
     Clients.Group("foobar").AddMessage(name, message); 
    } 
    public Task JoinGroup(string groupName) 
    { 
     return Groups.Add(Context.ConnectionId, groupName); 
    } 

    public Task AddGroups() 
    { 
     return Groups.Add(Context.ConnectionId, "foobar"); 
    } 
    public override Task OnConnected() 
    { 
     return AddGroups(); 
    } 
} 

答えて

0

: "HG-MyHub"

public Task AddGroups() 
{ 
    return Groups.Add(Context.ConnectionId, "foobar"); 
} 

を、それが何らかの理由で追加接頭辞このコードを使用した「HG-MyHub.foobar」そしてもちろん:名前を持つグループがなかったという理由だけで

HubProxy.Invoke<string>("JoinGroup", "foobar").Wait(); 

は何もしなかったグループの名前にグループの名前は、このように見えたので、 "foobar" これは誰かにとって役に立ちそうですか?

0

私はあなたがそれはほとんど権利があると思うが、あなたのOnConnected方法は非常に適切ではありません。

は、それを変更してみてください:

public override Task OnConnected() 
    { 
     Groups.Add(Context.ConnectionId, "foobar"); 
     return base.OnConnected(); 
    } 

これは基本的に私が使用したコードであり、その差があなたのために壊しているものに関しては私の推測ですbase.OnConnected()一部です。問題は、新しいグループを追加するときにということでした

+0

ありがとうございましたが、それはそうではありませんでした。私はこの問題を解決したソリューションを掲載しました。 – niks

関連する問題