Możemy tworzyć wiele koncentratorów dla różnych rzeczy, a aby połączyć się z każdym koncentratorem, możemy utworzyć wiele koncentratorów po stronie klienta z połączeniem do współużytkowania, aby jedno połączenie było wykonane dla wszystkich huby. Teraz pojawia się problem polegający na tym, że metoda hub onconnected nie podnosi się po każdym kodzie strony serwera centralnego.Metoda OnConnected nie nazywane SignalR gdy korzystam z połączenia współdzielonego w wielu koncentratorach
public class Hub1 : Hub
{
public override Task OnConnected()
{
return base.OnConnected();
}
}
public class Hub2 : Hub
{
public override Task OnConnected()
{
return base.OnConnected();
}
}
powiedzmy, po stronie klienta i stworzyć hub1 i hub2 z metod po stronie klienta określonych na obu piastach, to tylko jeden z węzłów metoda onConnected dostaje zwanych po stronie serwera. Jeśli utworzę koncentratory po stronie klienta z oddzielnymi połączeniami, wywoływana jest metoda OnConnected. Tak więc istnieje jakakolwiek inna praca wokół, jeśli chcę korzystać z tego samego połączenia dla każdego koncentratora, ale także chciałbym podnieść na Connected zdarzenia oddzielnych koncentratorów.
Nawet jeśli połączenie jest współdzielone między koncentratory? –
Tak. To jest obecna implementacja. Jeśli klient nie subskrybuje żadnego z wydarzeń w hoście, nie ma potrzeby tworzenia obiektu (obiektów) koncentratora, który i tak nigdy nie zostanie użyty. Jest to zachowanie w przypadku klienta javascript. Klient .NET zawsze tworzy połączenie niezależnie od subskrypcji zdarzeń lub nie. Będę edytować odpowiedź, aby dostarczyć więcej informacji. – DDan
To dziwne, ale dobry punkt. – Jacob