2016-11-24 3 views
0

Я разрабатываю приложение реального времени. Создано клиентское приложение ASP.NET MVC и WCF Service.and Снова мне нужно добавить концепцию signalR в WCF и клиентскую сторону для уведомления в реальном времени.Как настроить URL-адрес службы WCF как URL-адрес SignalR?

Для этого я создал самообслуживаемый сигналR и добавил это решение в решение WCF Service Solution в visual Studio.

Мои службы 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, на URL-адрес signalR?

ответ

0

Для самостоятельного хозяина SignalR на применении веб-службы WCF, вам просто нужно настроить /signalr в Startup.cs:

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

Спасибо, bob.it отлично работает – creator

Смежные вопросы