繁体   English   中英

SignalR Core 未在 Azure 应用服务中使用 Websocket

[英]SignalR Core not using Websockets in Azure App Service

我正在开发一个使用以下堆栈的 SignalR Core Web 应用程序:

  • ASP.NET Core 2.1 预览版 2 (2.1.0-preview2-final)
  • SignalR Core 1.0 预览版 2 (1.0.0-preview2-final)
  • Microsoft.AspNetCore.Cors (2.1.0-preview2-final)
  • Microsoft.AspNetCore.WebSockets (2.1.0-preview2-final)

客户端正在使用 SignalR NPM 包 (@aspnet/signalr)。

该应用程序配置如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy(
            "CorsPolicy",
            builder => builder
                .AllowCredentials()
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());
    });

    services.AddSignalR();
}

public void Configure(IApplicationBuilder app)
{
    app.UseCors("CorsPolicy");
    app.UseDefaultFiles();
    app.UseStaticFiles();
    app.UseWebSockets();
    app.UseSignalR(routes =>
    {
        routes.MapHub<ClientHub>("/hubs/notifications");
    });
}

http://localhost本地运行时,客户端使用 WS 协议进行连接。 但是当部署在 Azure 应用服务中时,它会回退到 SSE。

浏览器日志显示:

WebSocket connection to 'wss://xxxxxx.azurewebsites.net/hubs/notifications?id=ZRniWKpMLMPIyLhS5RSyAg' failed: Error during WebSocket handshake: Unexpected response code: 503
Information: SSE connected to https://xxxxxx.azurewebsites.net/hubs/notifications?id=ig47oOdQzbasdgrlr0cHaw

negotiate方法似乎返回对 Websockets 的支持:

{"connectionId":"ZRniWKpMLMPIyLhS5RSyAg",
 "availableTransports":[
  {"transport":"WebSockets","transferFormats":["Text","Binary"]},
  {"transport":"ServerSentEvents","transferFormats":["Text"]},
  {"transport":"LongPolling","transferFormats":["Text","Binary"]}]
}

我错过了什么吗? 还是不支持 WSS?

为了回答我自己的问题,Websocket 连接失败不是 ASP.NET Core 或堆栈的问题,而是由于 Azure App Service 需要在Application Settings中启用 Websockets:

应用程序设置中的 WebSocket 开关

2022年的答案。

要在现代控制台上启用 Web 套接字,请转到Home -> App Services -> your_app_name -> (Settings) Configuration -> General Settings并将Web sockets属性设置为On 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM