【问题标题】:Azure Function to SignalR (Serverless) to Web appAzure 函数到 SignalR(无服务器)到 Web 应用程序
【发布时间】:2023-04-05 15:00:01
【问题描述】:

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

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

但是,我无法让 Web 应用程序按照它所说的那样与 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 signalr azure-signalr


    【解决方案1】:

    您的 Azure Function 的作用是什么?您的 Web 应用程序中是否还定义了 Hub 逻辑?

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

    如果您的 Web App 仍然在处理 Hub 类中的客户端,并且 Azure Function 只是用于向这些客户端发送消息,请使用默认模式。

    【讨论】:

      猜你喜欢
      • 2020-01-21
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2022-06-30
      相关资源
      最近更新 更多