在 SignalR 2.0 中,传输方法可以通过查询字符串中的transport
参数确定。
string transportMethod = queryString["transport"];
在 SignalR 中,ASP.NET Core 似乎并非如此。
看来,我能做的最好的事情就是使用标题信息。
对于 WebSocket 连接:
Connection = Upgrade
Upgrade = Websocket
和长轮询:
Connection = Keep-Alive
和服务器发送的事件:
Connection = Keep-Alive
Accept = text/event-stream
有没有更好/更简单的方法来确定运输方式?
获取信号器传输类型。
Context.Features.Get<IHttpTransportFeature>().TransportType.ToString()
你可以像这样从HubCallerContext获取传输类型
Context.Items[ConnectionMetadataNames.Transport]
https://stackoverflow.com/a/53577064/2068719
// using Microsoft.AspNetCore.Http.Connections.Features;
var transportType = Context.Features.Get<IHttpTransportFeature>().TransportType;