下面是我的 SignalR Hub 类代码。
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);
}
}
Run Code Online (Sandbox Code Playgroud)
按照我的理解,
Clients.Caller.addWebAPIResponseToPage(response);
Run Code Online (Sandbox Code Playgroud)
仅向调用方客户端发送消息,而
Clients.All.addWebAPIResponseToPage(response);
将消息发送给所有客户端。
我的理解正确吗?
如果 No ,那么需要调用什么方法只向调用者客户端发送消息。
是的,你的理解是正确的。在这里阅读 https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-server#selectingclients
您可以使用呼叫者,您可以提供当前用户连接 ID 并向其发送消息,或者我在某些地方看到了一个名为 self 的组,它使用户可以从各种设备登录并向其发送消息。
例如,如果您同时在台式机和移动设备上登录,那么您将有两个连接 ID,但您是同一用户。您可以将此用户添加到 self_username_unique_group_name 类型的组中,然后向该组发送消息,该消息将发送到用户连接的所有设备。
您还可以在单独的表中管理单个用户的连接 ID,并根据需要向所有这些连接 ID 发送消息。
太多的灵活性和魔法享受
归档时间: |
|
查看次数: |
5878 次 |
最近记录: |