Есть ли способ подключения к SignalR Hub, встроенный в ASP. NET из другого приложения? - PullRequest
0 голосов
/ 10 января 2019

Для реализации онлайн-чата в реальном времени у меня уже есть веб-приложение, использующее ASP .NET MVC и SignalR. У меня есть SignalR ChatHub : Hub и я подключаюсь к этому хабу со стороны клиента следующим образом: let hub = $.connection.chatHub и работает хорошо. А что если я захочу использовать этот хаб в настольном приложении? Это вообще возможно и это хорошая практика? Если да, как мне подключиться к нему? Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 10 января 2019

Существует клиент .NET SignalR, который можно использовать для подключения настольного приложения к концентратору SignalR. Это доступно от NuGet.

Настройте клиент для подключения к концентратору так же, как ваш веб-клиент, и сообщения будут передаваться всем подключенным пользователям независимо от платформы.

Концентратор и клиент SignalR должны иметь одинаковую версию (см. Здесь: Подключение к серверу SignalR в ядре dotnet из клиента .NET ).

.NET 4.5 +

Для .NET версий 4.5+ (не включая .NET Core) требуется более старый клиент: Microsoft.<strong>AspNet</strong>.SignalR.Client

Документация и примеры кода доступны здесь: https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-net-client

ASP.NET Core

Если ваше приложение MVC использует ASP.NET Core, используйте вместо этого этот пакет: Microsoft.<strong>AspNetCore</strong>.SignalR.Client

Документацию можно найти здесь: https://docs.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-2.2

Пример - вызов метода сервера из клиента настольного приложения

Следующее из документации .NET 4.5+:

// Connect
var hubConnection = new HubConnection("http://www.contoso.com/");
IHubProxy stockTickerHubProxy = hubConnection.CreateHubProxy("stockTicker");
await hubConnection.Start();

// Call server method "JoinGroup" from client
stockTickerHubProxy.Invoke("JoinGroup", "SignalRChatRoom");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...