首页 > 解决方案 > 带有 ASP.Net Core 的 Azure SignalR 无服务器

问题描述

我需要在无服务器模式下将 ASP.Net Core 与 SignalR 连接起来。我找不到任何关于如何做到这一点的好例子(仅适用于默认模式),如果它甚至可能?

我们确实有 Azure 功能,可以很好地与无服务器 SignalR 配合使用。但现在我们需要连接到另一个运行 ASP.Net Core 的 Web 服务器。我们该怎么做?那么 Azure 函数和 ASP.Net Core 服务器共享同一个 SignalR 服务?

标签: c#azureasp.net-coreazure-functionssignalr

解决方案


这是连接到 SignalR 的示例(将“localhost”替换为您的 Azure SignalR 地址)

class Program
{
    static async Task Main(string[] args)
    {
        await Task.Delay(3000);

        var sender1 = SenderClient1("john");

        var sender2 = SenderClient1("papa");

        var sender3 = SenderClient1("marry");

        await Task.WhenAll(sender1, sender2, sender3);

        Console.ReadKey();
    }

    static async Task SenderClient1(string nomeUsuario)
    {
        var connection = new HubConnectionBuilder()
            .WithUrl("http://localhost:5005/sockethub", options =>
            {
                options.Headers["Application"] = "API Sender";
            })
            .WithAutomaticReconnect()
            .Build();

        await connection.StartAsync();
        await connection.SendAsync("UpdateClient", nomeUsuario);

        Console.WriteLine("Connection started.");

        connection.Closed += async (error) =>
        {
            await Task.Delay(new Random().Next(0, 5) * 1000);
            await connection.StartAsync();
        };

        while (true)
        {
            Thread.Sleep(400);

            await connection.SendAsync($"SendNotification", $"{nomeUsuario} - {DateTime.Now:G}");

            Console.WriteLine($"Send Message: {nomeUsuario} - {DateTime.Now:G}");
        }
    }
}

可以在此处找到更多详细信息和完整解决方案的示例:https ://github.com/hgmauri/signalr-socket-dotnet5


推荐阅读