在控制器(ASP.NET 核心)中执行 DI 时如何在 SignalR 中使用 Clients.Caller 和 Clients.Others?
How to use Clients.Caller and Clients.Others in SignalR when doing DI in a Controller (ASP.NET Core)?
我正在将 SignalR 与 ASP.NET 核心一起使用:
public class NotificationHub : Hub
{
}
[Route("api/[controller]")]
[ApiController]
public class AController : ControllerBase
{
private readonly IHubContext<NotificationHub> _hubContext;
public AController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}
}
我发现我只能使用属性 Clients.Caller
和 Clients.Others
public class NotificationHub : Hub
{
public void Test()
{
Clients.Caller.SendAsync("aMethod");
Clients.Others.SendAsync("aMethod");
}
}
虽然使用 IHubContext<NotificationHub>
我只能访问:
_hubContext.Clients.All
有什么方法可以访问 Hub 外部的 Clients.Caller
和 Clients.Others
属性?
您的 SignalR 客户端仅与集线器通信,因此您永远不会在控制器中拥有 "Caller",仅在集线器中。
您传递给控制器的 HubContext 可用于将消息发送回任何已注册的连接,方法是向所有连接 ID 或向选定的一组连接 ID 广播。
因此,如果您可以将控制器用户与连接 ID 匹配,则可以通过发出 Clients.Client("connection-id")
来获得相当于 Clients.Caller
的效果,并通过使用 [=13] 获得 Clients.Others
的效果=] 或类似的。
MS 会提供没有 CallingClinet 的 IHuBContext 完全没有意义。
调用客户端总是存在的,唯一的获取方式就是依赖注入。
女士真丢人。
我正在将 SignalR 与 ASP.NET 核心一起使用:
public class NotificationHub : Hub
{
}
[Route("api/[controller]")]
[ApiController]
public class AController : ControllerBase
{
private readonly IHubContext<NotificationHub> _hubContext;
public AController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}
}
我发现我只能使用属性 Clients.Caller
和 Clients.Others
public class NotificationHub : Hub
{
public void Test()
{
Clients.Caller.SendAsync("aMethod");
Clients.Others.SendAsync("aMethod");
}
}
虽然使用 IHubContext<NotificationHub>
我只能访问:
_hubContext.Clients.All
有什么方法可以访问 Hub 外部的 Clients.Caller
和 Clients.Others
属性?
您的 SignalR 客户端仅与集线器通信,因此您永远不会在控制器中拥有 "Caller",仅在集线器中。
您传递给控制器的 HubContext 可用于将消息发送回任何已注册的连接,方法是向所有连接 ID 或向选定的一组连接 ID 广播。
因此,如果您可以将控制器用户与连接 ID 匹配,则可以通过发出 Clients.Client("connection-id")
来获得相当于 Clients.Caller
的效果,并通过使用 [=13] 获得 Clients.Others
的效果=] 或类似的。
MS 会提供没有 CallingClinet 的 IHuBContext 完全没有意义。
调用客户端总是存在的,唯一的获取方式就是依赖注入。 女士真丢人。