2013-04-23 13 views
6

Mam dwa projekty w moim rozwiązanie:SignalR - Broadcasting nad Hub w innym projekcie od zewnątrz piasty

Project 1: "SignalRChat" (MVC) - Works fine
Project 2: "DatabaseWatcherService" Windows Service - Works fine

próbuję nawiązać połączenie z moim SignalRChat Hub z mojego usługi Windows i to wydaje się nie działać.

To gdzie mam zadzwonić do mojego Hub z mojego usługi windows (https://github.com/SignalR/SignalR/wiki/Hubs#broadcasting-over-a-hub-from-outside-of-a-hub):

void PerformTimerOperation(object sender, EventArgs e) 
    { 
     eventLog1.WriteEntry("Timer ticked..."); 

     var message = "test"; 

     var context = GlobalHost.ConnectionManager.GetHubContext<SignalRChat.ChatHub>(); 
     context.Clients.All.addNewMessageToPage(message); 
    } 

Otrzymuję następujący błąd podczas próby połączenia:

Message=The remote server returned an error: (500) Internal Server Error.

próbuję connect via var connection = new HubConnection("http://localhost:2129");

Port 2129 jest tym, na którym działa mój projekt MVC.

Odpowiedz

15

Będzie to działać, o ile mi wiadomo, podczas wywoływania koncentratora z poziomu aplikacji internetowej.

Aby współpracować z koncentratorem spoza aplikacji internetowej, np. z usługi Windows, trzeba będzie spojrzeć na SignalR Client Hubs documentation

  1. Dodaj następujący pakiet Nuget do projektu: Microsoft.AspNet.SignalR.Client

  2. Dodaj następujące oświadczenie na górę strony: using Microsoft.AspNet.SignalR.Client;

  3. Należy utworzyć połączenie z koncentratorem, a następnie nawiązać połączenie.


var connection = new HubConnection("http://mysite/"); 
IHubProxy myHub = connection.CreateHubProxy("MyHub"); 

connection.Start().Wait(); // not sure if you need this if you are simply posting to the hub 

myHub.Invoke("addNewMessageToPage", "Hello World"); 

W koncentratora byś wtedy trzeba mieć metodę AddNewMessageToPage która akceptuje ciąg hello world i stąd zadzwonić Clients.All.addNewMessageTopage(message)

+0

miałem literówkę w moim side..incorrect Nazwa Hub "MyHub". Kiedy zmieniłem go na moją aktualną nazwę Piasta, wszystko działało dobrze. Dziękuję. – Mithrilhall

+0

Tak, po prostu wziąłem kod z dokumentów SignalR. –

+0

To było dokładnie to, czego szukałem, dzięki! :-) – xan

Powiązane problemy