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?
为了使用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核心运行时。