2017-06-16 78 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發送消息給或我見過一個叫自有的地方組這使用戶從各種設備登錄併發送消息到。

例如,如果您在桌面和移動設備上登錄,那麼您將有兩個連接ID,但是您是同一用戶。您可以將此用戶添加到self_username_unique_group_name類別的組中,然後向該組發送消息,該消息將發送到用戶所連接的所有設備。

您還可以管理單獨表中單個用戶的連接ID,並根據需要將消息發送到所有這些連接ID。

靈活性和魔力太多 享受

相關問題