Как вызвать функцию 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();
}
}