我有一个基于 Microsoft.AspNetCore.SignalR.Client 的 SignalR .NET 客户端。
建立连接后,我想确定用于连接的 SignalR 传输机制用于调试目的。我在网络上遇到问题,需要在各种条件下验证当前的传输机制。
有人提出了各种类似的问题:
但他们的答案对我不起作用。由于这些问题很旧(4 年),而且当时 SignalR 有一些已弃用的软件包和重命名。我不确定它们是否相关。它们似乎还涵盖了服务器端传输类型检索。
他们答案的核心:
Context.Features.Get<IHttpTransportFeature>().TransportType.ToString();
在 SignalR 的一些 功能测试中发现,但这又似乎是在服务器端,在服务器端集线器内。
如何在客户端完成此操作?
您可以使用基于 Microsoft.AspNetCore.SignalR.Client 的 SignalR 客户端中 Connection 对象的 Transport 属性来获取连接传输类型。以下是确定用于连接的传输机制的示例:
using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.AspNetCore.Http.Connections.Client;
// Create the connection
var connection = new HubConnectionBuilder()
.WithUrl("http://your-signalr-endpoint")
.Build();
// Start the connection
await connection.StartAsync();
// Get the transport type
var transportType = connection.Transport.GetType().Name;
Console.WriteLine($"Transport Type: {transportType}");
连接上 Transport 对象的 GetType().Name 属性可用于确定客户端 SignalR 连接使用的传输类型。