using System; using System.Threading.Tasks; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.DependencyInjection; namespace Squirrowse.Client.Service { public class ConnectionManager : IConnectionManager { private readonly HubConnection _connection; private bool Connected; public ConnectionManager(string url, int port) { _connection = new HubConnectionBuilder() .WithUrl($"{url}:{port}/StreamHub") .AddMessagePackProtocol() .WithAutomaticReconnect() .Build(); } public async Task GetConnection() { if (Connected) { return _connection; } await _connection.StartAsync(); await RegisterOnHub(); Connected = true; return _connection; } private async Task RegisterOnHub() { await _connection.SendAsync("AddUser", Environment.UserName); } } }