微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多租户应用程序中的 SignalR - 包装 IHubContext<>

如何解决多租户应用程序中的 SignalR - 包装 IHubContext<>

我有一个以 SignalR 作为模块的多租户应用程序。当用户登录到他的租户时,我将该用户添加到由租户 ID 定义的组中。因此,所有用户现在都被划分为租户。我的集线器中的示例方法如下;

    public async Task SendMessage(string user,string message)
    {
        var tenantId = Context.GetHttpContext().Request.Path.Value.Replace("/","");
        await Clients.Group(tenantId).SendAsync("ReceiveMessage",user,message);
    }

如您所见,在这种情况下发送消息的任何客户端只会转到同一租户中的其他人。

我的下一个任务是向我的域事件公开中心,以便他们发送适当的通知。当我要这样做时,我会注入 IHubContext 以便我可以使用 Client 属性中的方法。问题是认情况下实现不知道租赁。因此,如果我执行 Client.All.SendAsync,它会将数据发送给所有租户中的所有用户

那么,有没有办法包装这些方法呢?因此,例如,如果我可以在我们使用 All()、AllExcept() 等时包装这些 Client 方法。它只会将数据发送到用户连接到的同一个租户。这样其他开发者就不必担心每次想要发送消息时都从上下文设置租户 ID。

我在堆栈溢出中找不到与此相关的任何内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。