Я работаю над личным сообщением Signal-R. Я пытался использовать сеансы, но не делал. Я хочу использовать идентификаторы пользователей из базы данных, а не context.ConnectionId. Как я могу это сделать?SignalR - Private Messaging-Userid
ответ
Предлагаю вам использовать IUserIdProvider
. По умолчанию один генерирует имена пользователей от клиента IPrincipal.Identity.Name
, но вы можете предоставить свои собственные:
http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections#IUserIdProvider
Это позволяет отправлять сообщения с помощью .User(userName)
вместо .Client(connectionId)
.
В статье, в которую я ссылаюсь, также представлены несколько альтернатив, таких как однопользовательские группы для обмена сообщениями без использования их идентификатора соединения.
Спасибо за ваш ответ, отлично работает. – dave
вы можете передать userId (или любую информацию) от клиента по подключению концентратора в качестве параметра, а затем установить группу 1: 1 в своем концентраторе. Затем вы можете выполнить хаб-методы, которые нацелены на эту группу (с одним ID), который по существу выполнит этот – scniro
, не могли бы вы привести мне пример? – dave