2013-08-06 5 views
4

Я пытаюсь создать механизм чата, в котором идентификатор пользователя будет представлен их идентификатором соединения с идентификатором. При обновлении страницы идентификатор соединения изменяется при создании нового соединения. Есть ли способ сохранить состояние идентификатора соединения пользователя до окончания сеанса браузера (до тех пор, пока он не завершит сеанс на клиенте).Постоянное состояние идентификатора соединения через сеанс браузера с использованием signalR

Любое руководство или документация? Это действительно помогло бы.

ответ

4

Наиболее распространенный способ был бы поддерживать в хабе, где CustomType имеет свойство статического List<CustomType> UserId и ConnectionId

Вот implmentation вы можете следить тоже: http://www.tugberkugurlu.com/archive/mapping-asp-net-signalr-connections-to-real-application-users

Я пишу connectionIds к базу данных sql в событии SignalR.OnConnected и удалить их в событии SignalR.OnDisconnected, вы получите в своей таблице записи о потерянных сиротах, которые не имеют большого значения, просто убедитесь, что у вас есть столбец created_date и игнорируйте любые соединения, которые так много часов или дней в зависимости от ваших потребностей. Также нет сеанса в SignalR, даже не пытайтесь, это известная проблема. Чтобы получить вашего текущего пользователя, современные из коробки поставщики членства Microsoft MVC работают нормально. Но вы также можете легко использовать cookie, чтобы получить имя/идентификатор текущего пользователя.

+0

Я думал об использовании базы данных, чтобы поддерживать постоянство идентификатора соединения как словаря. пользователь здесь является дополнительным кодом и отслеживает состояния, такие как бдительность. что вызывает метод ondisconnected? это на странице обновления? –

+0

Page Обновить или закрытие браузера запускают метод Signalr OnDisconnected –

+0

Вы поняли, что вы поняли? –

Смежные вопросы