SignalR与ASP.NET Core不使用websocket,而是使用长轮询

本文关键字:websocket Core NET SignalR ASP | 更新日期: 2023-09-27 18:01:07

我刚刚用ASP做了一个简单的测试。NET Core和SignalR(我使用了这个版本-0.1.0-rtm-21431-https://www.myget.org/feed/aspnetmaster/package/nuget/Microsoft.AspNetCore.SignalR.Server-我猜这是最新的版本。NET Core支持,但当我错了,请纠正我(,并注意到它使用了长轮询(我使用Charles嗅探了http请求(。

我对ASP做了同样的测试。NET 4.6.1,带SignalR 2.2.1-https://www.nuget.org/packages/Microsoft.AspNet.SignalR/并且它很好地使用WebSockets。

我注意到,通过长时间轮询,我的测试应用程序明显较慢,有时客户端之间会有差异。

知道为什么SignalR for AspNetCore不使用WebSockets而是使用长轮询吗?这是我的配置错误,还是SignalR的错误。NET Core还不支持websocket?

SignalR与ASP.NET Core不使用websocket,而是使用长轮询

为了使用websocket,您需要首先启用websocket中间件。

来自SignalR官方样品:

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(LogLevel.Debug);
        app.UseFileServer();
        app.UseWebSockets();
        app.UseSignalR<RawConnection>("/raw-connection");
        app.UseSignalR();
    }

尽管并非所有操作系统都支持WebSocket(需要Win8或更高版本,或Windows Server 2012或2008 R2及更高版本(,因此它们仍然可能会退回到长轮询。

截至撰写本文时,唯一可以与ASP一起使用的兼容版本。NET Core 1.0.0是0.1.0-rtm-21431

所有更新的版本都是基于ASP构建的。NET Core的夜间构建,也需要的夜间版本。NET核心运行时/SDK。不建议使用夜间构建,除非您正在为ASP编写一些库。NET Core 1.1,因为夜间构建经常由于不完整的包构建和最新的需求而中断。NET核心运行时。