从托管在同一服务器上的Web API触发Web应用程序信号R

时间:2019-01-11 10:38:41

标签: angularjs model-view-controller asp.net-web-api2 signalr

我有一个使用MVC 5和angular js开发的SPA Web应用程序,以及用于动态数据的Web API,两个应用程序都托管在同一IIS上,但端口不同。我们已在MVC应用程序中使用信号R进行客户端通知。通过Web api,我们正在将一些数据更新到数据库中,这时我们希望使用信号R向客户端发送通知。

我陷入了如何从Web api通知Web应用程序有关更改的问题,该更改将进一步触发信号R将其发送到客户端。

我尝试使用来自Web api的Signal R HubConnection类创建Web应用程序的代理。却不起作用

使用系统;

using Microsoft.AspNet.SignalR.Client;
using Core.Application;
using System.Net;
using Microsoft.AspNet.SignalR.Client.Transports;
using System.Web;

    public class SignalRConnectionContext
        {
            private static IHubProxy HubProxy { get; set; }
            private static HubConnection Connection { get; set; }
            private static readonly string Host = "";
            static SignalRConnectionContext()
            {
                if (HttpContext.Current != null && HttpContext.Current.Request != null && HttpContext.Current.Request.Url != null)
                    Host = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/signalr";
                else
                    Host = ApplicationManager.DependencyInjection.Resolve<ISettings>().NotificationSingalServerUrl + "/signalr";
            }

            public static IHubProxy SetupConnection()
            {

                if (Connection != null && Connection.State != ConnectionState.Disconnected)
                    return HubProxy;

                if (Connection == null)
                {
                    Connection = new HubConnection(Host);


                    HubProxy = Connection.CreateHubProxy("SignalHub");
                    logService.Error("SignalR CreateHubProxy.");
               }

                try
                {
                    Connection.Start().Wait();
                    //Connection.Reconnected += OnConnectionReconnet;
                    return HubProxy;
                }
                catch (Exception ex)
                {
                    logService.Error("SignalR Connection Error, Message" + ex.Message);
                }

                return HubProxy;
            }
    }

任何人都可以建议通过Web api通知Web应用程序的其他方法吗?

0 个答案:

没有答案