Хостинг SignalR выдает ошибку согласования между клиентом .net core signalr и .net console C# signalr server

У меня есть ядро ​​asp.net, работающее на raspberry pi buster с использованием nginx. Я размещал Signar Hub в этом основном веб-приложении asp.net. Все это сработало.

По разным причинам я решил перенести этот хаб на внешнее консольное приложение C# с использованием.Net Framework и Mono.

Я проработал образец кода, представленный онлайн. Но это не работает. Я предполагаю, что это как-то связано с тем, что ядро ​​.net использует разные библиотеки signalr js? Только догадываешься?

Мой клиент js:

$(function () {
    $.connection.hub.url = "./NotificationUserHub";
        var chat = $.connection.myHub;

        $.connection.hub.start().done(function () {
            $("#divConnectionStatus").html("Connected");
    });
});

мое консольное приложение С #:

public class Program
{
    static void Main(string[] args)
    {
        Hub();
        Console.ReadKey();
    }

    public static void Hub()
    {
        HostFactory.Run(serviceConfig =>
        {
            serviceConfig.Service<SignalRServiceChat>(serviceInstance =>
            {
                serviceConfig.UseNLog();

                serviceInstance.ConstructUsing(
                    () => new SignalRServiceChat());

                serviceInstance.WhenStarted(
                    execute => execute.OnStart(null));

                serviceInstance.WhenStopped(
                    execute => execute.OnStop());
            });

            TimeSpan delay = new TimeSpan(0, 0, 0, 60);
            serviceConfig.EnableServiceRecovery(recoveryOption =>
            {
                recoveryOption.RestartService(delay);
                recoveryOption.RestartService(delay);
                recoveryOption.RestartComputer(delay,
                    System.Reflection.Assembly.GetExecutingAssembly().GetName().Name +
                    " computer reboot"); // All subsequent failures
            });

            serviceConfig.SetServiceName
                (System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
            serviceConfig.SetDisplayName
                (System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
            serviceConfig.SetDescription
            (System.Reflection.Assembly.GetExecutingAssembly().GetName().Name +
             " is a simple web chat application.");

            serviceConfig.StartAutomatically();
        });
    }    

}

class Startup
{
    public void Configuration(IAppBuilder app)
    {
        Logger.LogVerbose(LoggerName.Debug, "SIGNAL");  //not being called for some reason!!!
        //app.UseCors(CorsOptions.AllowAll);  //not using cors
        app.MapSignalR();
    }
}

public partial class SignalRServiceChat : IDisposable
{
    public static readonly LogWriter Log = HostLogger.Get<SignalRServiceChat>();

    public SignalRServiceChat()
    {
    }

    public void OnStart(string[] args)
    {
        Log.InfoFormat("SignalRServiceChat: In OnStart");

        string url = "http://localhost:5000";
        WebApp.Start(url);
    }

    public void OnStop()
    {
        Log.InfoFormat("SignalRServiceChat: In OnStop");
    }

    public void Dispose()
    {
    }
}

Я получаю сообщение об ошибке:

**Uncaught TypeError: Cannot read property 'hub' of undefined**

Заметки:

Я установил:

Microsoft.AspNet.SignalR.JS  on the asp.net core web app

Если я использую свой существующий клиент js (который, как я знаю, работает, когда я размещаю signalR внутри основного приложения.net)

var connection = new signalR.HubConnectionBuilder().withUrl("./NotificationUserHub").build();
connection.serverTimeoutInMilliseconds = 100000;

 async function start() {
     $("#divConnectionStatus").html("Connecting");
}

я получаю сообщение об ошибке:

**Error: Failed to complete negotiation with the server: Error**

0 ответов

Другие вопросы по тегам