Как связать данные с подключением SignalR в .NET Core? - PullRequest
0 голосов
/ 29 ноября 2018

В моем старом проекте SignalR (pre-Core) у меня был static ConcurrentDictionary<string, MyConnectionClass> Connections = new ...; для представления моих индивидуальных соединений с дополнительными данными, полученными в течение времени жизни соединения.

Как мне решить эту проблему в SignalRдля .NET Core?

Я смотрю на это руководство: https://medium.com/@andrejsabrickis/recap-creating-a-demo-of-real-time-communication-app-using-aspnetcore-signalr-d8ac0afba081

, в котором используется следующее:

private readonly ConcurrentDictionary<HubConnectionContext, UserDetails> _usersOnline;

Теперь мне интересно, должен ли яиспользуйте HubConnectionContext в качестве ключа.Это безопасно для использования?Будет ли этот экземпляр всегда ассоциироваться с идентификатором соединения, пока соединение является жизнеспособным?Я не использую балансировку нагрузки.

1 Ответ

0 голосов
/ 02 декабря 2018

Теперь мне интересно, должен ли я использовать HubConnectionContext в качестве ключа.Это безопасно для использования?Будет ли этот экземпляр всегда ассоциироваться с идентификатором соединения, пока соединение является жизнеспособным?

Нет.Реализация, описанная в этой статье, фактически использует:

  1. ConcurrentDictionary<string, UserDetailsDto>

  2. _userTracker.AddUser(connection.ConnectionId, new UserDetailsDto (...))

connection.ConnectionId безопасен в использовании и достаточен для связи данных с соединением.

...