2017-06-16 16 views
0

以下は私のSignalR Hubクラスコードです。私の理解あたりとしてSignalRの発信者クライアントにメッセージを送信するにはどうすればよいですか?

public class ChatHub : Hub 
{ 
    public void Send(string name, string message) 
    { 
     // Call the addNewMessageToPage method to update clients. 
     Clients.All.addNewMessageToPage(name, message); 
    } 


    public async void webAPIRequest() 
    { 
     HttpClient client = new HttpClient(); 
     HttpResponseMessage response = await client.GetAsync("https://jsonplaceholder.typicode.com/posts"); 
     //Clients.All.addWebAPIResponseToPage(response); 
     Clients.Caller.addWebAPIResponseToPage(response); 

     await Task.Delay(1000); 

     response = await client.GetAsync("http://www.google.com"); 

     Clients.Caller.addWebAPIResponseToPage(response); 
     //Clients.All.addWebAPIResponseToPage(response); 

     await Task.Delay(1000); 

     response = await client.GetAsync("https://jsonplaceholder.typicode.com/posts?userId=1"); 
     //Clients.All.addWebAPIResponseToPage(response); 
     Clients.Caller.addWebAPIResponseToPage(response); 

    } 

} 

Clients.Caller.addWebAPIResponseToPage(response); 

Clients.All.addWebAPIResponseToPage(レスポンス)のに対し、唯一の呼び出し側クライアントにメッセージを送信します。

は、すべてのクライアントにメッセージを送信します。

  1. 私の理解は正しいですか?

  2. いいえの場合、呼び出し元クライアントにのみメッセージを送信するには、どのメソッドを呼び出す必要があります。

答えて

3

はいご理解いただけます。ここでそれを読む https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-server#selectingclients

あなたは、あなたが現在のユーザーの接続IDを提供することができ、発信者を使用し、それにメッセージを送信したり、私は、ユーザーがさまざまなデバイスからログインし、それにメッセージを送信し続けていくつかの場所で自己というグループを見ていることができます。

たとえば、デスクトップにもモバイルにもログインしている場合、2つの接続IDがありますが、同じユーザーです。このユーザーをself_username_unique_group_nameの種類のグループに追加し、そのグループにメッセージを送信します。このメッセージは、ユーザーが接続されているすべてのデバイスに送信されます。

単一のユーザーの接続IDを別のテーブルで管理し、必要に応じてそれらのすべての接続IDにメッセージを送信することもできます。

あまりにも柔軟性と魔法 お楽しみください

関連する問題