У меня есть приложение xamarin, которое пытается поговорить об использовании SignalR в функциях Azure.
У меня есть 2 функции лазури согласно документации.
public static class NegotiateFunction
{
[FunctionName("negotiate")]
public static SignalRConnectionInfo GetSignalRInfo(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req,
[SignalRConnectionInfo(HubName = "chat")] SignalRConnectionInfo connectionInfo)
//, UserId = "{headers.x-ms-client-principal-id}"
{
return connectionInfo;
}
}
и
public static class SendMessageFunction
{
[FunctionName("Send")]
public static Task SendMessage(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message,
[SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
// var chatObj = (ChatObject)(message);
return signalRMessages.AddAsync(
new SignalRMessage
{
// the message will only be sent to this user ID
// UserId = chatObj.ReciversId,
Target = "Send",
Arguments = new[] { message }
});
}
}
в моем клиенте xamarin я подключаюсь вот так.
try
{
_connection = new HubConnectionBuilder()
.WithUrl("http://192.168.1.66:7071/api")
.Build();
_connection.On<string>("Send", (message) =>
{
AppendMessage(message);
});
await _connection.StartAsync();
}
Я отправляю сообщение с помощью этого кода на одной из страниц приложения Xamarin.
try
{
await _connection.SendAsync("Send", MessageEntry.Text);
MessageEntry.Text = "";
}
код соединения работает, он правильно выполняет функцию «согласовать», но когда я вызываю SendAsync, он не достигает точки останова в [FunctionName («Send»)] и ничего не происходит.Это также не дает мне никаких исключений.
локальные настройки такие же
Обновление
Я также попробовал Invoke.это не сработало.
Должен ли я попытаться сделать POST-вызов [FunctionName ("Send")]?