SignalR在其他服务器上使用Web API和Calling Service

时间:2016-04-25 14:31:50

标签: asp.net-web-api signalr

我有一个应用程序,它使用JQuery从客户端调用Web API控制器,但是然后从这样的控制器调用另一个服务器,另一个控制器接收并执行所有数据逻辑(插入等)。 。)所以基本上(两种不同的解决方案,完全独立,没有依赖)

Client
Web API   (this live in http://localhost:5020/)
-----------------
Some Server API here  (this lives in http://localhost:4566)
Data Layer

SQL

因此,Web API会将calles发送到某个服务器并保存或检索数据。

当需要将某些内容保存到另一台服务器上的某个数据库时,我需要能够添加SinalR。我如何设计这个,以便在客户端保存一些通知,因为没有依赖项?

我是否添加了HUB以及接收服务器或客户端服务器上没有的内容,有点混淆了它的工作方式。

我将不胜感激任何澄清。

1 个答案:

答案 0 :(得分:2)

我通常使用this answer中解释的方法。

这将允许您拥有可以从前端(JS)和后端(C#)调用的集线器。 基本上对于后端(C#)调用使用hubcontext。正如SignalR团队here所解释的那样。

简单代码(在您的集线器类中):

public class YourHubClass: Hub 
    private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<YourHubClass>();

    // ...
    public static void Send(string message) {
        hubContext.Clients.All.addMessage(message);
    }
}

现在您可以在控制器中调用静态方法:

YourHubClass.Send("Hello!");

客户将通过活动addMessage(message)

收到消息