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.
Любые предложения о том, как решить эту проблему?
Ответы
Ответ 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);