Прежде чем начать, я хочу упомянуть, что это не совсем дубликат, на другие подобные вопросы нет полезных ответов для моего случая.
В моем ASP.Net Core 2.1 у меня есть действие, которое можно вызвать с помощью AJAX (его имя CreateConversation
).
В этом приложении у меня есть активное соединение SignalR для каждого пользователя в моем приложении (таким образом, соединение начинается, когда пользователь обновляет / перемещается по странице).
Когда это действие вызывается с использованием AJAX (пользователь нажал на какую-то кнопку на странице), я хочу добавить это соединение к определенной группе моего Hub
. Проблема здесь, чтобы иметь возможность добавить соединение в группу концентраторов из контроллера, мне нужен доступ к идентификатору этого соединения из HubCallerContext), и этот идентификатор недоступен за пределами концентратора.
public class ConversationsController
{
public async Task<IActionResult> CreateConversation()
{
// How can this be made possible?
await Groups.AddToGroupAsync(/**Context.ConnectionId**/, "SomeGroup");
}
}
До сих пор я ни разу не указывал Id соединения с хабом вручную (пока мне это не нужно). Сохранение HubCalledContext.I необходимо для решения этой проблемы? или есть ли лучший подход в решении этого? Я думал о том, чтобы сохранить его в сеансах, например, но у меня нет доступа к HttpContext в SignalR. Я ценю любое оптимальное предложение, чтобы иметь возможность добавить свое подключение к требуемой группе концентраторов извне самого концентратора.