gpt4 book ai didi

SignalR 托管在单独的 appPool 上

转载 作者:行者123 更新时间:2023-12-01 02:33:10 27 4
gpt4 key购买 nike

我的 Web 应用程序有一个基于 构建的聊天应用程序模块信号机 中心。

该应用程序将有 1000+ 并发用户。我想主持聊天模块在一个单独的应用程序池上将其与我的主应用程序分开,这样 SignalR 就不会成为我的主应用程序的瓶颈。

我不知道该怎么做。我使用 Hub 类构建了一个简单的聊天系统(很像 Google Talk ),客户端代码驻留在 Site Master 中,因为它将在整个应用程序中通用。

我还希望能够在 Hub 类之外调用 Hub 方法。例如,管理员可能会从管理面板将某些任务分配给用户。所以,在成功完成服务操作(任务分配)后的Controller方法中,我想发送一个信号机 给该特定用户的消息。我应该使用 Hub 还是 Persistence 连接来实现这两个目标?主持人信号机 在不同的港口?我很感激这方面的一些指导。谢谢!

最佳答案

不是我认为你一定要这样做,而是我能理解分离的渴望。为此,您必须让 MVC 应用程序调用集线器方法,就好像它是 SignalR 客户端本身一样。您可以通过在同一个集线器上放置单独的方法或添加仅用于这种应用程序间通信的辅助集线器来做到这一点。

我可能会使用后一种方法,即拥有第二个集线器,因为您可以以不同的方式保护它。如果你走这条路,你会得到HubContext用于主集线器并调用您想要的任何电话/发射您想要的任何信号。这可能看起来像这样:

public MyInterAppCommunicationHub : Hub
{
public void SendSystemAlert(string message)
{
HubContext myPrimaryHubContext = GlobalHost.ConnectionManager.GetHubContext<MyPrimaryHub>();

myPrimaryHubContext.Clients.systemAlert(message);
}
}

关于SignalR 托管在单独的 appPool 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11790754/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com