SignalR 2 kullanıyorum ve Hub yöntemlerimi nasıl kullanabileceğimi anlayamıyorum e.g bir denetleyici eyleminin içinden.Hub yöntemlerini denetleyiciden mi kullanıyorsunuz?
ben aşağıdakileri yapabilirsiniz biliyorum:
var hub = GlobalHost.ConnectionManager.GetHubContext<T>();
hub.Clients.All.clientSideMethod(param);
Ama bu istemci tarafında doğrudan yöntemini yürütür.
Sunucu tarafı ClientSideMethod(param)
yönteminde iş mantığım varsa, denetleyiciden istemciden arandığında olduğu gibi aramak istiyorum?
Şu anda hub'ımın içinde public static void ClientSideMethod(param)
kullanıyorum ve bu yöntemde IHubContext
'u ConnectionManager
'dan kullanıyorum.
Bunu yapmanın daha iyisi yok mu?
çalışmıyor aşağıdaki (SignalR 2'de artık?): Orada
var hubManager = new DefaultHubManager(GlobalHost.DependencyResolver);
instance = hubManager.ResolveHub(typeof(T).Name) as T;
instance.ClientSideMethod(param);
Bir Müşteriler erişirken istisna, "Hub Hub boru hattı desteklenmez aracılığıyla oluşturulmamış" olsun. Ben
public class MyHub : Hub
{
public void DoSomething()
{
var helper = new HubHelper(this);
helper.DoStuff("hub stuff");
}
}
public class MyController : Controller
{
public ActionResult Something()
{
var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
var helper = new HubHelper(hub);
helper.DoStuff("controller stuff");
}
}
public class HubHelper
{
private IHubConnectionContext hub;
public HubHelper(IHubConnectionContext hub)
{
this.hub = hub;
}
public DoStuff(string param)
{
//business rules ...
hub.Clients.All.clientSideMethod(param);
}
}
Neden ben JS olduğunu varsayalım müşteri, bunu, sen bir Ajax isteği yapmak ve denetleyici – MEYWD
@MEYWD üzerinde gerekenleri yapabilirsiniz: Aşağıdaki gibi
public class AdminHub : Hub<AdminHub>
) Ben (statik) yöntemleri: Çünkü örneğin "bir şey olduğunda" güncellemek istediğim bir yönetici arayüzüne sahibim. Örneğin. İstemci belirli bir sayfayı ziyaret ettiğinden, bu sayfadaki denetleyici eyleminde hub yöntemini tetiklemek isterim. Asıl müşteri bunu umursamıyor, o zaman neden bu mesajı iletmeli? – ChrFinBenzer bir şey yaptım, istemciler ve yöneticilerim var (özel istemci), yönetici bir komut gönderiyor ve istemciden gelen yanıtı bekliyorum, bunu yapmak için yöneticilerin listesini ve merkezdeki istemci listesini yaptım. admin bir istemci seçer, başka bir yönetici kullanmaz, böylece bir komut gönderir, göbek müşteriye aktarır, istemci göbe cevabını döndürür, ki bu da yöneticiye iletilir ve yanıt yazdırılır Ekranda zaten daha iyi bir yaklaşım olduğu için – MEYWD