确定 SignalR Core 中的传输方法?

Determine transport method in SignalR Core?

在 SignalR 2.0 中,传输方法可以由查询字符串中的 transport 参数确定。

string transportMethod = queryString["transport"];

ASP.NET Core 的 SignalR 似乎并非如此。

看来,我能做的最好的事情就是使用 header 信息。

对于 WebSocket 连接:

Connection = Upgrade
Upgrade = Websocket

长轮询

Connection = Keep-Alive

server-sent事件:

Connection = Keep-Alive
Accept = text/event-stream

是否有 better/easier 方法来确定传输方法?

您可以像这样从 HubCallerContext 获取传输类型

 Context.Items[ConnectionMetadataNames.Transport]

获取 Signalr TransportType。

Context.Features.Get<IHttpTransportFeature>().TransportType.ToString()

// using Microsoft.AspNetCore.Http.Connections.Features;

var transportType = Context.Features.Get<IHttpTransportFeature>().TransportType;