簡體   English   中英

使用ASP.NET Core的SignalR不使用websockets但使用長輪詢

[英]SignalR with ASP.NET Core doesnt use websockets but long polling

我剛剛使用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請求)。

我使用SignalR 2.2.1對ASP.NET 4.6.1進行了相同的測試 - https://www.nuget.org/packages/Microsoft.AspNet.SignalR/並且它使用了WebSockets。

我注意到,通過長輪詢我的測試應用程序顯然較慢,有時客戶端之間存在差異。

知道為什么SignalR for AspNetCore不使用WebSockets而是長輪詢嗎? 是我的配置錯誤還是SignalR for .NET Core不支持websockets?

要使用websockets,您需要首先啟用websockets中間件。

來自SignalR的官方樣本

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(LogLevel.Debug);

        app.UseFileServer();

        app.UseWebSockets();
        app.UseSignalR<RawConnection>("/raw-connection");
        app.UseSignalR();
    }

雖然每個操作系統都不支持websockets(需要Win8或更高版本或Windows Server 2012或2008 R2及更高版本),但它們仍然可能會回退到長輪詢。

截至撰寫本文時,可與ASP.NET Core 1.0.0一起使用的唯一兼容版本為0.1.0-rtm-21431

所有較新的版本都是針對ASP.NET Core夜間版本構建的,這些版本還需要夜間版本的.NET Core運行時/ SDK。 除非您為ASP.NET Core 1.1編寫一些庫,否則不建議使用每晚構建,因為夜間構建經常由於不完整的包構建和最新.NET Core運行時的需求而中斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM