我正在使用 SignalR 和 .Net 5.0 并利用集线器过滤器 https://learn.microsoft.com/en-us/aspnet/core/signalr/hub-filters?view=aspnetcore-5.0对我的 SignalR Hub 传入的调用执行代码。
我正在寻找一种方法来对从集线器到客户端的传出消息执行相同的操作,但似乎没有其他选择。
也许或者,我希望在内置时专门挂钩并执行代码Ping 消息 https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.signalr.protocol.pingmessage?view=aspnetcore-5.0被发送出去。
看起来旧版本的 HubPipeLineModule 中曾经可以实现类似的功能,但我无法找到任何方法在当前的 SignalR 中实现此目的。这可能吗?
HubLifetimeManager https://github.com/dotnet/aspnetcore/blob/v6.0.10/src/SignalR/server/Core/src/HubLifetimeManager.cs负责向客户端发送消息,并且可以在注册 SignalR 之前注入您的自定义消息:
builder.Services.AddSingleton(typeof(HubLifetimeManager<>), typeof(CustomHubLifetimeManager<>));
builder.Services.AddSignalR();
where
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
}
它工作得很好,但是这种方法对我来说看起来有点老套。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)