簡體   English   中英

如何通過c#僅針對Web API調用者調用signalR函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM