从后端业务层调用SignalR Hub

5

我有一个MVC网站,它依赖一些相当庞大的业务对象。我的MVC控制器调用管理器对象,这些对象会将工作委派给其他一些对象。

基本上,代码是深度在服务器端运行的,而Hub在某种程度上就像控制器一样靠近客户端。

是否有一种方法可以根据传递给这些管理器对象的Hub引用执行SignalR方法?

2个回答

4
如果您的MVC和SignalR服务在同一个进程中运行,您可以调用GlobalHost.ConnectionManager.GetHubContext("MyHub")。
如果它们在不同的进程中,则需要在您的MVC应用程序中创建一个SignalR客户端。

1
我认为业务逻辑实际上是在单独的AppDomain中执行的。我该如何在MVC应用程序中设置SignalR客户端?谢谢。 - matthewbaskey
你能提供一些样例吗? - Claudio Santos
在同一进程中的示例:http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-server#callfromoutsidehub当运行在不同进程中时,C#客户端的示例: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-net-client - Gustavo Armenta

1
所有客户端都将连接到您的Web应用程序并在其中保持连接。从单独的后端程序中,您只需调用Web应用程序中的Web服务,该Web服务可以将消息发布到Web项目中的同一SignalR中心。您的后端应用程序无法直接连接到SignalR中心。所有流程都通过一个单一点进行,即您的Web应用程序。
如果您只是在谈论同一Web应用程序中的共享类库,则应该能够将中心对象传递给其他类,如其他人所回答的那样:GlobalHost.ConnectionManager.GetHubContext(“MyHub”);

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