2 votes

Client Javascript SignalR - La méthode d'invocation fonctionne mais la promesse ne fonctionne pas ( ???)

Actuellement j'étudie SignalR pour un projet web ASP.NET Core, j'utilise ASP.NET Core comme serveur pour SignalR et les clients web utilisent SignalR Javascript Client. Je crée une application de chat qui renvoie un message lorsque le client invoque une fonction du serveur. Voici ma fonction client Javascript :

      this.hub.invoke(method, data)
      .then((res)=>{ alert(res);})
      .catch(err=> alert(err));

La méthode du serveur :

    public async Task<IActionResult> joinRoom(string roomId)
    {
        Console.WriteLine(roomId);
        return new OkObjectResult("Ok");
    }

Problème :

  • Invocation réussie, Console côté serveur a écrit le roomId

  • Cependant, le côté client Promise.then/Promise.catch ne fonctionne pas .

Quand je ferme le serveur, il y a plusieurs erreurs du côté client qui disent L'invocation a été annulée parce que la connexion a été fermée.

Ma version de SignalR est 1.0.3

Vraiment, je n'arrive pas à trouver la raison. J'espère que vous pourrez m'aider, s'il vous plaît... J'ai également essayé de retourner une chaîne de caractères du côté du serveur, mais cela n'a pas fonctionné non plus.

2voto

dfowler Points 16530

Vous ne pouvez pas utiliser IActionResults avec SignalR, ce n'est pas une requête http, c'est une invocation de type RPC. Renvoyez juste l'objet que vous voulez récupérer ou faites le type de retour Task si vous n'avez pas besoin de renvoyer quoi que ce soit au client.

public async Task<string> joinRoom(string roomId)
{
    Console.WriteLine(roomId);
    return "Ok";
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X