Когда OnConnectedAsync() вызывается на стороне сервера, это должно означать, что соединение установлено, но происходит сбой на стороне Xamarin и состояние HubConnection имеет значение все еще отключен.
Я установил следующие пакеты Nuget:
Microsoft.AspNetCore.SignalR.Client v8.0.5 Для Клиента Xamarin Forms
Microsoft.AspNetCore.SignalR.Core v1.1.0 Для ASP.Net Core Server
Вот мой код Xamarin Forms:
Код: Выделить всё
public MainPage()
{
InitializeComponent();
hubConnection = new HubConnectionBuilder()
.WithUrl(url, (opts) =>
{
opts.HttpMessageHandlerFactory = (message) =>
{
if (message is HttpClientHandler clientHandler)
// bypass SSL certificate
clientHandler.ServerCertificateCustomValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return true; };
return message;
};
})
.WithAutomaticReconnect()
.Build();
hubConnection.On("ReceiveMessage", (user, message) => { var finalMessage = $"{user} says {message}"; });
Connect();
}
async Task Connect()
{
try
{
await hubConnection.StartAsync(); // I get an Exception The operation was cancelled when this is called
}
catch (Exception ex)
{
}
}
async Task SendMessage(string user, string message)
{
try
{
await hubConnection.InvokeAsync("SendMessage", user, message);
}
catch (Exception ex)
{
// send failed
}
}
Код: Выделить всё
public class ChatHub : Hub
{
public override Task OnConnectedAsync()
{
// This method is called on server side, but still connection fails on client side
return base.OnConnectedAsync();
}
}
public override Task OnDisconnectedAsync(Exception exception)
{
return base.OnDisconnectedAsync(exception);
}
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... arin-forms
Мобильная версия