[英]how Call a signalR function just for web API Caller by c#
我需要在剛剛調用Web API方法的客戶端上回調一個函數。 我可以發回所有用戶,但只需要打電話給呼叫者即可。
[HttpPost]
public WebResult Logout()
{
var cc =Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
cc.Clients.All.TestLogOut();
}
我知道如果有呼叫者的connectionId,這可能是可行的,但我不知道怎么回事?
另外,似乎還有一些IHbubCallerContext ...這是什么,它可能會有所幫助。 如果可以得到調用者和connectioId!
cc.Clients.Client("ConnectionId").TestLogoutCurrent();
如何回調呼叫者函數或如何獲取呼叫者connectionId?
謝謝
您可以從SignalR Hub實施中的Caller客戶端上調用函數:
[HubName("MyHub")]
public class MyHub : Hub
{
public void logout()
{
Clients.Caller.clientLogout();
}
}
最后,我找到了一個解決方案,似乎我們無法在Web API中獲得連接ID,因此我們需要創建一個HUB類並從客戶端調用方法。 在該方法中,我們具有調用方和連接ID,因此我們可以對該方法進行回調。
public class EventHub : Hub
{
public void LogOutSignalRTest()
{
var cc = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
cc.Clients.Client(Context.ConnectionId).clientlogout();
}
}
這里的上下文是HubCallerContext的類型,因此我們具有連接ID,clientlogout是客戶端上的函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.