Как вызвать функцию signalR только для веб-API Caller c # - PullRequest
0 голосов
/ 03 мая 2018

Мне нужно вызвать функцию на клиенте, который только что вызвал метод 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 ]

0 голосов
/ 05 мая 2018

Наконец-то я нашел решение, похоже, мы не можем получить идентификатор соединения в веб-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 - это функция на стороне клиента.

0 голосов
/ 03 мая 2018

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

[HubName("MyHub")]
public class MyHub : Hub
{
    public void logout()
    {
        Clients.Caller.clientLogout();
    }
}
...