Azure Function 到 SignalR(无服务器)到 Web 应用程序

Azure Function to SignalR (Serverless) to Web app

所以我相当坚持这一点。多年来,我们一直在 Web 应用程序中使用“默认”SignalR,一切都很好。

我们现在想要添加一个 Azure Function,它要求 SignalR 是无服务器的。我可以轻松获得 SignalR 和 Azure 函数来玩球。

但是,我无法让 Web App 像它所说的那样与 SignalR 对话

“严重:服务返回握手错误:Azure SignalR 服务处于无服务器模式,不允许服务器连接。ID:fe6a4f57-6293-4b6f-bdec-9040ff60aef5”

好的,看看其他教程,例如:

https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-quickstart-dotnet-core https://softchris.github.io/pages/dotnet-signalr.html#configure-signalr

你可以在 Javascript

const connection = new signalR.HubConnectionBuilder()
                .withUrl('https://*****-sb-staging-signalr.service.signalr.net/statushub')
                .build();
            bindConnectionMessage(connection);

然而,这给了我 CORS 问题,即使 SignalR 接受所有并且我在 mty Startup.cs

services.AddCors(options =>
            {
                options.AddDefaultPolicy(builder =>
                {
                    builder.WithOrigins("https://******-sb-staging-admin.azurewebsites.net/")
                        .AllowCredentials();
                });
            });

services.AddSignalR(srConfig => srConfig.EnableDetailedErrors = true).AddAzureSignalR();
services.AddCors();

我究竟如何才能让 Web 应用程序与 SignalR Serverless 对话

你的 Azure Functions 的作用是什么?您的 Web 应用程序中是否仍然定义了 Hub 逻辑?

在默认模式下,您的 Web 应用程序 处理客户端的生命周期,SignalR 服务就像一个代理,它通过 路由所有客户端流量服务器连接 到 Web 应用程序,而在无服务器模式下,SignalR 服务 处理客户端的生命周期。 This article 详细描述了差异。

如果您仍然让 Web 应用程序处理 Hub class 中的客户端,并且 Azure Function 仅用于向这些客户端发送消息,请使用默认模式。