2016-11-24 51 views
0

我正在開發一個實時應用程序。我創建了一個ASP.NET MVC客戶端應用程序和WCF Service.and同樣,我需要在WCF和客戶端添加signalR概念以進行實時通知。如何將WCF服務運行URL配置爲SignalR url?

爲此,我創建了一個自託管的signalR,並將此解決方案添加到Visual Studio中的WCF Service Solution。

我的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地址硬編碼了一些值:

string url =「http://localhost:63694/Signalr」;

我不知道它是否正確或不可以。任何人都可以提供解決方案來解決這個問題嗎?

如何配置WCF服務運行Url到signalR url?

回答

0

要在WCF Web服務應用程序自託管SignalR,你只需要在Startup.cs配置/signalr

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

與MyHub定義是這樣的:

在客戶端MVC
public class MyHub : Hub 
{ 
    public void Send(string user) 
    { 
     Clients.All.addMessage(user); 
    } 
} 

。 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); 
    } 
+0

謝謝bob.it正常工作 – creator