Когда клиенту следует провести повторные переговоры со службой SignalR? - PullRequest
1 голос
/ 01 февраля 2020

Я пытаюсь понять токен доступа, возвращенный с помощью шага negotiate, равного SignalR Service.

[FunctionName("negotiate")]
public static SignalRConnectionInfo Negotiate(
    [HttpTrigger(AuthorizationLevel.Anonymous)]HttpRequest req,
    [SignalRConnectionInfo(HubName = "chat")]SignalRConnectionInfo connectionInfo)
{
    return connectionInfo;
}
  • По умолчанию, как долго токен, возвращаемый SignalRConnectionInfo, действителен ?
  • Есть ли способ вручную настроить срок службы токена?
  • Если токен больше не действителен, что происходит с объектом Microsoft.AspNetCore.SignalR.Client.HubConnection (в частности, с его свойством State)? Будет ли он установлен на Disconnected?

По сути, я пытаюсь определить, когда мне следует пересмотреть , чтобы сохранить соединение открытым. В случае истечения срока действия токена, как клиент может узнать, что ему нужно еще раз договориться, прежде чем он сможет отправлять и получать сообщения в реальном времени?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2020
  1. Детализация до кода Azure SignalR SDK , время жизни токена доступа по умолчанию составляет 1 час.

  2. Пока SDK, кажется, поддерживает настройку времени жизни , привязка службы , кажется, не раскрывает ее .

    С 3, не думаю, что вам это действительно нужно, но вы можете поднять вопрос о его репо или предоставить PR для его поддержки.

  3. В пакете @microsoft/signalr вы можете либо включить автоматизацию c переподключение или переподключение вручную . Я полагаю, что библиотека обрабатывает переговоры самостоятельно,

1 голос
/ 10 февраля 2020

В разделе Аутентификация и авторизация в документации Microsoft говорится:

Предоставляемая вами функция маркера доступа вызывается перед каждым HTTP-запросом, сделанным SignalR. Если вам нужно обновить токен, чтобы сохранить соединение активным (потому что он может истечь во время соединения), сделайте это внутри этой функции и верните обновленный токен.

Поэтому вам необходимо отправить «обновленный» токен при первом запуске соединения. В контексте приложения, когда срок действия вашего токена истекает, он должен перенаправить пользователя на идентификационный сервер, чтобы обновить sh токен, а затем снова запустить новое соединение.

В нашей компании у нас есть постоянное соединение с концентратором с токен приложения, поэтому, когда срок его действия истекает, он принудительно обновляет sh токен, и это инициирует новое подключение к концентратору с новым токеном.

...