Подтвердить что ты не робот

SignalR: Как отправить данные в IConnected.Connect()

Я реализую метод Connect() на интерфейсе IConnected для добавления новых подключений к правильным группам. Это хорошо работает, за исключением одного: чтобы добавить пользователя в нужную группу, мне нужно отправить значение, которое нужно прочитать в этом методе. Я попробовал добавить свойство в концентратор клиента:

var uIHub = $.connection.uIHub;
uIHub.SessionType = "Edit";

Но он недоступен из метода Connect:

if (string.IsNullOrEmpty(Caller.SessionType) || Caller.SessionType == "Edit") {
     sessionId = WAFContext.EditSession.SessionId.ToString();                
} else {
     sessionId = WAFContext.ViewSession.SessionId.ToString();
}
Groups.Add(Context.ConnectionId, sessionId);

Caller.SessionType всегда равно null.

Любые предложения о том, как решить эту проблему?

4b9b3361

Ответ 1

Я решил это, добавив мою информацию в запрос, который доступен по методу IConnected.Connect().

В .NET-клиенте вы передаете запрос в свой HubConnection:

var connection = new HubConnection("http://localhost:8080/", "myInfo=12345");

На клиенте JS перед запуском соединения вы устанавливаете свойство qs:

$.connection.hub.qs = "myInfo=12345";

Затем вы можете получить доступ к этой информации на сервере в методе Connect():

var myInfo = Context.QueryString["myInfo"];
Groups.Add(Context.ConnectionId, myInfo);