我有一个 MVC 网站,上面有一些相当庞大的业务对象。我的 MVC 控制器调用管理器对象,这些对象将工作委托给其他对象集。
基本上代码在服务器端,而集线器在某种程度上就像一个控制器,因为它非常接近客户端。
有没有办法根据传递给这些 Manager 对象的 Hub 引用来执行 SignalR 方法?
我有一个 MVC 网站,上面有一些相当庞大的业务对象。我的 MVC 控制器调用管理器对象,这些对象将工作委托给其他对象集。
基本上代码在服务器端,而集线器在某种程度上就像一个控制器,因为它非常接近客户端。
有没有办法根据传递给这些 Manager 对象的 Hub 引用来执行 SignalR 方法?
如果你的 MVC 和 SignalR 服务在同一个进程上运行,你可以调用 GlobalHost.ConnectionManager.GetHubContext("MyHub");
如果它们在不同的进程上,那么您需要在您的 MVC 应用程序中创建一个 SignalR 客户端
好吧,所有客户端都将连接到您的 Web 应用程序并在那里保持连接。从单独的后端程序中,您只需调用 Web 应用程序中的 Web 服务,该 Web 服务可以将消息发布到 Web 项目中的同一 SignalR 集线器上。您的后端应用无法直接连接到 SignalR 集线器。这一切都流经一个点,即您的网络应用程序。
如果您只是在谈论同一个 Web 应用程序中的共享类库,您应该能够将集线器对象传递给另一个类,因为其他人回答: GlobalHost.ConnectionManager.GetHubContext("MyHub");