2017-06-16 102 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。

灵活性和魔力太多 享受

相关问题