在SignalR.Net客户端中显式设置多个传输
本文关键字:设置 传输 SignalR Net 客户端 | 更新日期: 2023-09-27 18:21:12
是否可以在SignalR.Net客户端中显式设置两个(或多个)传输?
我可以使用以下代码设置单个传输:
_hubCn.Start(new LongPollingTransport());
在Javascript客户端中,可以使用:
connection.start({ transport: ['webSockets','longPolling'] });
然而,我在.Net客户端上没有发现允许这样做的重载。还有别的办法吗?
对于一点上下文,这个特殊用法在Silverlight 5应用程序中。我仍在探索这与正常的.Net或JS使用有什么不同。
使用自动传输:
var httpClient = new DefaultHttpClient();
_hubCn.Start(new AutoTransport(httpClient,
new IClientTransport[]
{
new WebSocketTransport(httpClient),
new LongPollingTransport(httpClient)
}));
如源代码中所述,您提供的列表是:
后备顺序中的传输列表
如果在启动与.Net客户端的连接时不提供传输,它将使用所谓的AutoTransport
,它基本上会尝试不同的传输,直到找到一个有效的传输。请注意,根据平台的不同(例如,.NET Framework与Silverlight/Portable),AutoTransport可用的传输列表可能会有所不同(目前您将在.NET上获得WebSockets、ServerSentEvents和LongPolling,在Portable上获得ServerSentEvent和LongPollling)。但是,如果您想排除(或添加-例如,有一个Windows Phone 8.1(通用应用程序)特定于WebSocket传输的实现)传输,您可以手动创建AutoTransport
并提供您想要使用的传输。