简体   繁体   中英

How to return SignalRMessage inside async method?

Hi I am working on azure function with SignalR. I have one method in azure function to push some SignalR messages. My function looks like below:

[FunctionName("samplefunction")]
public static async Task<SignalRMessage> PushSuccess(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")] DataResponseSuccess DataResponseSuccess,
    ILogger log,
    [SignalR(HubName = "myhub")] IAsyncCollector<SignalRMessage> signalRMessages,
    HttpRequest req)
{
    var data = await Authenticated(req, log);
    if (data == "UnauthorizedResult")
    {
        log.LogInformation($"Authentication failed: at {DateTime.UtcNow}");
    }

    return signalRMessages.AddAsync(
       new SignalRMessage
       {
           UserId = "",
           Target = "myhub",
           Arguments = new[] { DataResponseSuccess }
       });
}

Recently I added await Authenticated(req, log); method and made method as async Task<SignalRMessage> . After making these changes I started getting below error:

Cannot implicitly convert type System.threading.Task.Task to Microsoft.Azure.WebJobs.Extensions.SignalRService.SignalRMessage.

Can someone help me to fix this? Any help would be appreciated.

Try this!

var message = new SignalRMessage
{
   UserId = "",
   Target = "myhub",
   Arguments = new[] {DataResponseSuccess}
};

signalRMessages.Add(message);

if(signalRMessages.SaveChangesAsync()) return message;

throw new HubException("Failed!");

Maybe

var message = new SignalRMessage
{
   UserId = "",
   Target = "myhub",
   Arguments = new[] {DataResponseSuccess}
};

await signalRMessages.AddAsync(message);
return message;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM