我正在使用SignalR和.Net 5.0,并利用Hub Filters来执行代码,在我的SignalR Hub中处理传入的调用。
我正在寻找一种方法,可以在向客户端发送消息之前执行类似操作的功能,但似乎没有可选项。或许,我想要钩入并执行代码,特别是在内置的Ping Messages被发送时。
看起来在旧版的HubPipeLineModule中曾经有类似的功能,但我并没有找到在当前版本的SignalR中实现此功能的任何方式。这个可能吗?
我正在使用SignalR和.Net 5.0,并利用Hub Filters来执行代码,在我的SignalR Hub中处理传入的调用。
我正在寻找一种方法,可以在向客户端发送消息之前执行类似操作的功能,但似乎没有可选项。或许,我想要钩入并执行代码,特别是在内置的Ping Messages被发送时。
看起来在旧版的HubPipeLineModule中曾经有类似的功能,但我并没有找到在当前版本的SignalR中实现此功能的任何方式。这个可能吗?
HubLifetimeManager 负责向客户端发送消息,可以在注册 SignalR 之前注入自定义的消息管理器:
builder.Services.AddSingleton(typeof(HubLifetimeManager<>), typeof(CustomHubLifetimeManager<>));
builder.Services.AddSignalR();
在哪里
public class CustomHubLifetimeManager<THub> : DefaultHubLifetimeManager<THub> where THub : Hub
{
public override Task SendAllAsync(string methodName, object?[] args, CancellationToken cancellationToken = default)
{
//todo: do your stuff
return base.SendAllAsync(methodName, args, cancellationToken);
}
//todo: override rest of the methods
}
它可以正常工作,但是这种方法对我来说看起来有点不太正规。