簡體   English   中英

.NET控制台SignalR客戶端與.NET核心SignalR服務器

[英].NET Console SignalR Client vs .NET Core SignalR Server

我需要在.NET控制台和ASP.NET Core 2.0應用程序之間交換數據。 第二個已經托管了SignalR服務器:

public class MyHub : Hub
{
    public override async Task OnConnectedAsync()
    {
        await Clients.All.InvokeAsync("Send", $"{Context.ConnectionId} connected");
    }

    public Task Send(string message)
    {
        return Clients.All.InvokeAsync("Send", $"{Context.ConnectionId}: {message}");
    }
}

app.UseSignalR(routes =>
{
     routes.MapHub<MyHub>("hubs");
});

從html頁面我可以調用這些函數。 因此它正在發揮作用。 現在我在解決方案中添加了一個.NET 4.6控制台應用程序:

public static HubConnection _connection;

static void Main(string[] args)
{
    _connection = new HubConnection("http://localhost:51278/hubs");
    var myHub = _connection.CreateHubProxy("MyHub");

    _connection.Closed += OnDisconnected;
    OnDisconnected();

    myHub.Invoke<string>("Send", "Hello World ").ContinueWith(task => {
        if (task.IsFaulted)
        {
            Console.WriteLine("There was an error calling send: {0}", task.Exception.GetBaseException());
        }
        else
        {
            Console.WriteLine(task.Result);
        }
    });

    _connection.Stop();
}

static void OnDisconnected()
{
    Console.WriteLine("Disconnected. Try to connect...");
    var t = _connection.Start(new LongPollingTransport());

    bool result = false;
    t.ContinueWith(task => 
    {
        if (!task.IsFaulted)
        {
            result = true;
            Console.WriteLine("Connected");
        }
    }).Wait();

    if (!result)
    {
        OnDisconnected();
    }
}

但輸出是:

斷開。 嘗試連接......

斷開。 嘗試連接......

沒有別的。 我是SignalR的新手,我不知道如何進一步調試這樣的行為。

SignalR for .Net Core與Full .Net框架的SignalR的先前版本不兼容。

在完整框架中編寫的SignalR客戶端不能與Asp.Net核心中的集線器一起使用(反之亦然)。

這是GitHub的確認

SignalR Core服務器是否可以與“傳統”Signalr 2客戶端連接?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM