SignalR Между MVC SignalR Server и Windows Service SIgnalR Client
Я уже знаю, спрашивая здесь, что я могу иметь SignalR в простой старой службе Windows. Я хочу общаться между этой службой Windows как SignalR Client и ASP.NET MVC SignalR Server. Я использовал этот справочник хабов, он сказал
Код сервера, который указывает URL
app.MapSignalR("/signalr", new HubConfiguration());
Если я это сделаю, куда будут отправляться сообщения? Что такое хаб, когда вы делаете новую настройку HubConfiguration?
В нем говорится, что я могу подключиться к
NET client code that specifies the URL
var hubConnection = new HubConnection("http://contoso.com/signalr", useDefaultUrl: false);
У меня это будет на моем Windows Server, но если я отправлю текст на http://myserver.com/signalr на сервере, как мне его получить? Какой хаб?
И где лучше всего разместить это в службе Windows? Пример будет замечательным!
Ответы
Ответ 1
Это решает проблему
На клиенте (служба Windows):
protected override async void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart");
try
{
var hubConnection = new HubConnection("http://www.savitassa.com/signalr", useDefaultUrl: false);
IHubProxy alphaProxy = hubConnection.CreateHubProxy("AlphaHub");
await hubConnection.Start();
await alphaProxy.Invoke("Hello", "Message from Service");
}
catch (Exception ex)
{
eventLog1.WriteEntry(ex.Message);
}
}
На сервере:
public class AlphaHub : Hub
{
public void Hello(string message)
{
// We got the string from the Windows Service
// using SignalR. Now need to send to the clients
Clients.All.addNewMessageToPage(message);
// Send message to Windows Service
}
Ответ 2
Допустим, у вас есть следующий код.
var _connection = new HubConnection("http://localhost:61194/signalr");
var _myHub = _connection.CreateHubProxy("MyHub");
Вы можете создать столько прокси, которые у вас есть на сервере.
Затем вы можете вызвать метод сервера следующими способами.
_myHub.On<string>("recieved", data =>
{
System.Diagnostics.Debug.WriteLine("DATA : " + data);
});
_connection.Start().Wait();
_myHub.Invoke("Hello").Wait();
Вы можете поместить этот код в вызов метода службы Windows, который вызывается из таймера или в методе, который запускается по расписанию.
Ответ 3
Этот учебник может помочь, а также содержит пример кода:
http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20
Ответ 4
Я думаю, что я не понимаю, что именно вы хотите.
** Сигнал R. Сервер: размещен как служба Windows
** Сигнал R. Клиент: приложение ASP.NET MVC.
** Сигнал R. Сервер: приложение ASP.NET MVC.
** Сигнал R. Клиент: служба Windows
Если вам нужен вариант A. Возможно, вы захотите взглянуть на "" Руководство по самообучению Signal R".
Если вам нужен вариант B. Вам необходимо создать клиент .Net Signal R в службе Windows. Пожалуйста, ознакомьтесь с этим руководством о том, как это сделать.
Независимо от типа вашего хостинга каждый хаб имеет уникальное имя, которое необходимо использовать при установлении соединения.
Относительно:
У меня это будет на моем Windows Server, но если я отправлю текст в http://myserver.com/signalr на сервере, как мне его получить? Какой хаб?
Сигнал R является абстракцией двухканальной связи в реальном времени, поэтому это действительно зависит от настройки вашего концентратора.
Относительно:
И где лучше всего разместить это в службе Windows? Примером может служить будь здорово!
Я бы сказал, пройдите и начните с объявления Singleton, чтобы начать.
Надеюсь, что это поможет.