2016-08-05 20 views
3

私はASP.NET CoreとSignalR(0.1.0-rtm-21431-https://www.myget.org/feed/aspnetmaster/package/nuget/Microsoft.AspNetCore.SignalR.Server)を使って簡単なテストを行いました。 NET Coreがサポートしていますが、私が間違っていると私は間違っています)、それが長いポーリングを使用していることに気付きました(私はチャールズを使ってhttpリクエストを盗聴しました)。SignalR with ASP.NET Core WebSocketを使用していますが、長いポーリング

私は、ASP.NET 4.6.1とSignalR 2.2.1 - https://www.nuget.org/packages/Microsoft.AspNet.SignalR/で同じテストを行い、WebSocket fineを使用しています。

長いポーリングで私のテストアプリケーションが明らかに遅くなることに気付きました。時にはクライアント間に違いがあることがありました。

なぜAspNetCoreのSignalRが代わりにWebSocketを使用するのではなく、長いポーリングを使用するのですか?それは私の設定ミスか、あるいはSignalR for .NET CoreがまだWebソケットをサポートしていないのでしょうか?

+0

どのOSで実行していますか? – Tseng

+1

IISにwebsocketをインストール/有効にしましたか? –

+1

https://github.com/aspnet/SignalR-Server/blob/dev/samples/SignalRSample.Web/Startup.cs#L25 Websocketを有効にしますが、どのOSでもサポートされていません。特定のOSを実行している場合に長いポーリング – Tseng

答えて

7

Webソケットを使用するには、まずWebsocketsミドルウェアを有効にする必要があります。公式SignalR sampleから

:WebSocketをはすべてのOS(Win8以上必須またはWindows Server 2012または2008 R2およびそれ以降)でサポートされていないので、彼らはまだ戻っロングポーリングに落ちるかもしれないが

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

     app.UseFileServer(); 

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

執筆時点では、ASP.NET Core 1.0.0で使用できる唯一の互換バージョンは0.1.0-rtm-21431です。

すべての新しいバージョンは、夜間バージョンの.NETコアランタイム/ SDKも必要とするASP.NET Core夜間ビルドに対してビルドされています。不完全なパッケージビルドと最新の.NETコアランタイムの要件のため夜間ビルドが頻繁に中断されるため、夜間ビルドを使用することはお勧めしません。ASP.NET Core 1.1用のライブラリを作成している場合を除きます。

+1

ASP.NET IISの外部のコア。 WebSocketはどこでも動作します。実装はウィンドウに依存しません(.NET Core *はクロスプラットフォームなので) – davidfowl

+0

@davidfowl:情報をありがとう。したがって、ASP.NETコアをIISでリバースプロキシとしてホスティングする場合、 'app.UseWebSockets()'ミドルウェアを使用していてもOSの制限が適用されますか? – Tseng

+0

はい。不透明なアップグレードをサポートするIISのバージョンが必要なので、Windows> = 8だけがそれを提供します。 – davidfowl

関連する問題