Как я могу использовать значение из переменной сеанса в качестве части имени группы в signalR
Привет я пытаюсь настроить signalR для распространения сообщений для веб-пользователей проблема в том, что один сайт содержит различные "области", а также "типы пользователей".
Область определяется, когда пользователь посещает сайт, передавая параметр url, который затем сохраняется в переменной сеанса, "тип пользователя" по умолчанию не регистрируется, а затем изменяется, когда пользователь входит в этот тип пользователя (возвращаемый из веб-сервиса) и сохраняется в объекте пользователя.
Моей целью было подключиться к хабу с помощью signalR, когда пользователь посещает сайт и добавляет users connectionId к имени группы, используя "идентификатор области" из сеанса и "идентификатор типа пользователя" из объекта пользователя в контексте.
Проблема, с которой я сталкиваюсь, заключается в том, что я могу получить идентификатор пользователя, но когда дело доходит до идентификатора области signalR не может получить доступ к сеансу. Я понимаю причины, по которым нельзя разрешить сеанс, доступный в signalR, но кто-нибудь знает, есть ли способ включить этот или альтернативный способ, который я могу получить доступ к области пользователей, чтобы я мог создавать эти уникальные группы.
1 ответ:
Если вы знаете область пользователей, вы можете просто вызвать функцию из клиента после подключения, чтобы добавить их в эту группу:
При загрузке страницы:
ClientScript.RegisterClientScriptBlock(this.GetType(), "areaKey", "var theAreaTheyBelongTo= '" + serverSideAreaTheyBelongTo + "'", true);
На вашем хабе:
public void SubscribeToArea(string area) { Groups.Add(Context.ConnectionId, area); }
На вашем клиенте:
$.connection.hub.start(function () { yourHubName.subscribeToArea(theAreaTheyBelongTo); });