我如何将 WCF 服务 运行 URL 配置为 SignalR url?

How do i config the WCF Service Running URL as SignalR url?

我正在开发一个实时系统 Application.I 我创建了一个 ASP.NET MVC 客户端应用程序和 WCF Service.and 我再次需要在 WCF 和客户端实时添加 signalR 概念通知。

为此,我创建了一个自托管的 signalR,并将此解决方案添加到 visual Studio 中的 WCF 服务解决方案。

我的 WCF 服务 运行 URL 地址是:http://localhost:63694/Service1.svc

我的要求是 WCF 和 SignalR 工作 together.and 客户端是 ASp.Net MVC4

The WCF and ASP.NET MVC codes are here

SignalR代码:-

      namespace SelfHostingSignalR
        {
           class Program
          {

                 static void Main(string[] args)
                 {
                 try
                  {
                      string url = "http://localhost:63694/Signalr";

                      using (WebApp.Start(url))
                  {
                     Console.WriteLine("Server running on {0}", url);
                     Console.ReadLine();
                  }
             }
              catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                   Console.ReadLine();
               }
            }
          }

          class Startup
          {
            public void Configuration(IAppBuilder app)
            {
               app.UseCors(CorsOptions.AllowAll);
               app.MapSignalR();

            }
         }
         public class MyHub : Hub
         {
           public void Send(string user)
           {
              Clients.All.addMessage(user);

            }
           }
      }

对于 signalr url 我用 wcf url 地址硬编码了一些值:

字符串url = "http://localhost:63694/Signalr";

我不知道它是否正确,或者 not.Could 谁能给我提供解决方案?

如何将 WCF 服务 运行 Url 配置为 signalR url?

要在 WCF Web 服务应用程序上自托管 SignalR,您只需在 Startup.cs 中配置 /signalr:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}

MyHub 定义如下:

public class MyHub : Hub
{
    public void Send(string user)
    {
        Clients.All.addMessage(user);
    }
}

在您的客户端 MVC .NET 应用程序中,您可以调用服务器方法并定义客户端方法,如下所示:

    [HttpGet]
    public async Task<ActionResult> SignalR()
    {
        dynamic model = new ExpandoObject();
        using(var hubConnection = new HubConnection("http://localhost:63694"))
        {
            var myHub = hubConnection.CreateHubProxy("MyHub");
            myHub.On<string>("addMessage", (user) =>
            {
                model.User = user;
            });
            await hubConnection.Start();
            await myHub.Invoke("Send", "an user");
        }
        return View(model);
    }