Я создал функции согласования и отправки сообщений в Azure Функции (аналогично приведенным ниже примерам) для включения службы SignalR. Я устанавливаю UserId
на SignalRMessage
с помощью специального механизма аутентификации.
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-signalr-service?tabs=csharp
[FunctionName("negotiate")]
public static SignalRConnectionInfo Negotiate(
[HttpTrigger(AuthorizationLevel.Anonymous)]HttpRequest req,
[SignalRConnectionInfo
(HubName = "chat", UserId = "{headers.x-ms-client-principal-id}")]
SignalRConnectionInfo connectionInfo)
{
// connectionInfo contains an access key token with a name identifier claim set to the authenticated user
return connectionInfo;
}
[FunctionName("SendMessage")]
public static Task SendMessage(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message,
[SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
return signalRMessages.AddAsync(
new SignalRMessage
{
// the message will only be sent to this user ID
UserId = "userId1",
Target = "newMessage",
Arguments = new [] { message }
});
}
Я хочу отправить pu sh уведомление, если клиент больше не подключен, вместо добавления нового объекта в IAsyncCollector
. Я также правильно настроил AppCenter
pu sh framework, но столкнулся с проблемой. Есть ли простой способ узнать, какой UserId
все еще подключен к концентратору? Таким образом, я мог бы отправить пу sh. Каковы рекомендуемые рекомендации Microsoft по этому вопросу?