如何在多租户应用程序中定义 signalR MapHub 路由

How to define signalR MapHub route in a multi-Tenant application

SignalR ChatHub 被定义为控制器。

[Route("{tenantName}/chatHub")]
public class ChatHub: Hub

在启动配置方法中,

app.UseSignalR(routes =>
{
 routes.MapHub<MessageHub>("/dev/chatHub");
});

这在开发环境中工作正常。

我的问题是,如何定义 useSignalR 方法,以便 mapHub 路径独立于租户,或者有不同的定义方式以便像 $"/{tenant}/chatHub" 这样对所有租户起作用?

我已经通过以下方式处理了这个问题; 创建了没有像

这样的租户的 chatHub 控制器
[Route("/chatHub")]
public class ChatHub: Hub

并且在startup.cs中定义为

app.UseSignalR(routes =>
 {
     routes.MapHub<ChatHub>("/chatHub");
 });

所以这种方式的公共实例正在处理所有租户调用并通过方法参数识别租户,例如

public 异步任务 SendMessage(字符串租户,字符串消息) { ... }

我一直在研究这个,如果您使用 Finbuckle 作为您的多租户库,您可以使用以下内容来指定您的路线

app.UseSignalR(routes =>
{
     routes.MapHub<ChatHub>("/{__tenant__}/chatHub");
});