3 votes

SignalR Core ne peut pas se connecter à partir du client JS

Je suis ce guide de MS . J'ai créé une application MVC Core 2.0 et ajouté la référence du package

<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.0-alpha1-final" />

J'ai configuré le fichier Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddSignalR();
    }

y

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        ...
        app.UseSignalR(routes =>
        {
            routes.MapHub<Statistics>("statistics");
        });

       ...
    }

Voici mon StatisticsHub :

public class Statistics : Hub
{
    public Task Send(string message)
    {
        return Clients.All.InvokeAsync("Send", message);
    }
}

De mon HomeController J'ai une action Index qui renvoie cette vue :

<script src="js/signalr-client-1.0.0-alpha2-final.js"></script>

<script>
    let connection = new signalR.HubConnection('/statistics');

    connection.on('send', data => {
        console.log(data);
    });

    connection.start()
        .then(() => connection.invoke('send', 'Hello'));
</script>

J'ai également essayé d'inclure le <script src="js/signalr-clientES5-1.0.0-alpha2-final.js"></script> client mais il n'y a pas de différence.

Je lance l'application, firefox démarre et voici ce qui se passe dans la console : Erreurs

J'ai suivi le guide étape par étape et je ne sais pas pourquoi il ne se connecte pas.

0voto

Mrg Gek Points 426

Essayez ce qui suit

[HubName("Statistics")]
public class Statistics : Hub
{
    public Task Send(string message)
    {
        return Clients.All.InvokeAsync("Send", message);
    }
}

script

<script>
        $.connection.hub.url = "http://localhost:xxxx/signalr";
        var statisticsHub = $.connection.Statistics;
    </script>

Ou

<script>
    let connection = new signalR.HubConnection('http://localhost:xxxx');

    connection.on('send', data => {
        console.log(data);
    });

    connection.start()
        .then(() => connection.invoke('send', 'Hello'));
</script>

Où "xxxx : est le numéro de port

-1voto

Pankaj Points 1

Vous devez activer l'origine croisée si vous avez un client isolé.

Dans votre startup ConfigureServices ajoutez services.AddCors() ;

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