gpt4 book ai didi

signalr - 如何将 SignalR Hub 类(不是 hubcontext)注入(inject) Controller

转载 作者:行者123 更新时间:2023-12-04 01:33:48 26 4
gpt4 key购买 nike

public class ComputerHub : Hub
{
private readonly DbContext _db;
public ComputerHub(DbContext db)
{
_db = db;
}

public Task OpenLock(string connectionId)
{
return Clients.Client(connectionId).SendAsync("OpenLock");
}
...
}

启动.cs
  public void ConfigureServices(IServiceCollection services)
{
...
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
....
app.UseSignalR(routes =>
{
routes.MapHub<ComputerHub>("/computerhub");
});
....
}

我想在 Controller 中使用 OpenLock 方法。我应该如何将 startup.cs 中的计算机集线器添加到 ServiceCollection。

最佳答案

你似乎不明白这是如何工作的。为了简单地回答你的问题,直接注入(inject)类,它只需要在服务集合中注册,就像任何其他依赖一样:

services.AddScoped<ComputerHub>();

但是,这不会做你想做的事。类本身不做任何事情。赋予它权力的是集线器环境。如果你只是注入(inject)一个类的实例,没有集线器上下文,那么像 Clients 这样的东西(您要使用的方法)将不会被设置并且不会具有他们实际做任何有用的事情所需的任何功能。

关于signalr - 如何将 SignalR Hub 类(不是 hubcontext)注入(inject) Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50835292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com