Как вызвать функцию signalR только для веб-API Caller C#

Мне нужно вызвать функцию на клиенте, который только что вызвал метод Web API. Я могу отправить обратно всем пользователям, но мне просто нужно позвонить только для вызывающего абонента.

        [HttpPost]
        public WebResult Logout()
        {
     var cc =Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
         cc.Clients.All.TestLogOut();
        }

Я знаю, что это возможно, если у меня есть идентификатор соединения для вызывающего абонента, но я не знаю, как это может быть?

Плюс, кажется, что-то есть IHbubCallerContext... что это такое и может ли это быть полезным. Если можно получить звонящего и подключение!

cc.Clients.Client("ConnectionId").TestLogoutCurrent();

КАК CallBack функция вызывающего абонента ИЛИ как получить идентификатор вызывающего абонента?

Спасибо

2 ответа

Решение

Наконец, я нашел решение: кажется, мы не можем получить идентификатор подключения в веб-API, поэтому нам нужно создать класс HUB и вызвать метод из клиента. в этом методе у нас есть вызывающая сторона и идентификатор соединения, поэтому мы можем сделать обратный вызов для этого метода.

public class EventHub : Hub

    {
        public void LogOutSignalRTest()
        {

            var cc = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
                cc.Clients.Client(Context.ConnectionId).clientlogout();

        }

    }

контекст здесь - это тип HubCallerContext, поэтому у нас есть идентификатор соединения, clientlogout - это функция на стороне клиента.

Вы можете вызвать функцию на клиенте Caller изнутри вашей реализации SignalR Hub:

[HubName("MyHub")]
public class MyHub : Hub
{
    public void logout()
    {
        Clients.Caller.clientLogout();
    }
}
Другие вопросы по тегам