过滤SignalR Core Hub传出的消息

5

我正在使用SignalR和.Net 5.0,并利用Hub Filters来执行代码,在我的SignalR Hub中处理传入的调用。

我正在寻找一种方法,可以在向客户端发送消息之前执行类似操作的功能,但似乎没有可选项。或许,我想要钩入并执行代码,特别是在内置的Ping Messages被发送时。

看起来在旧版的HubPipeLineModule中曾经有类似的功能,但我并没有找到在当前版本的SignalR中实现此功能的任何方式。这个可能吗?

1个回答

0

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
}

它可以正常工作,但是这种方法对我来说看起来有点不太正规。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接