У меня есть следующий концентратор:
public class MyHub : Hub
{
public static HubLifetimeManager<MyHub> HubManager { get; private set; }
public MyHub(HubLifetimeManager<MyHub> hubManager)
{
HubManager = hubManager;
}
public string SayHello()
{
return "hello! " + DateTime.UtcNow;
}
}
, и я отправляю события через равные промежутки времени, например:
private static void TickTimer(object State)
{
var Time = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);
var A = MyHub.HubManager;
if (A != null)
{
A.SendAllAsync("Update", new object[] { Time });
}
}
На стороне клиента я использую следующий код:
var Connection = new HubConnectionBuilder()
.WithUrl("http://localhost:8000/myhub")
.Build();
Connection.On("Update", () => Console.WriteLine("Update")); DOESN'T WORK
Connection.On("Update", (object[] O) => Console.WriteLine("AA")); DOESN'T WORK EITHER
var StartAsync = Connection.StartAsync();
StartAsync.Wait();
Что я пропустил?
Обновление:
Я добавил ведение журнала и обнаружил следующее:
Не удалосьсвязать аргументы, полученные при вызове '(null)' из 'Update'.System.IO.InvalidDataException: вызов предоставляет 1 аргумент (ов), но цель ожидает 0. в Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.BindArguments (считыватель JsonTextReader, IReadOnlyList`1 paramTypes)
Проблемабыло просто, что список параметров не был тем же самым.Но если ведение журнала не включено, SignalR просто проглатывает ошибки, и ничего не видно.