是否可以在SignalR .Net客户端中明确设置两个(或更多)传输?
我可以使用以下代码设置单个传输:
_hubCn.Start(new LongPollingTransport());
在Javascript客户端中,可以使用:
完成connection.start({ transport: ['webSockets','longPolling'] });
然而,我还没有在.Net客户端上发现过载,允许这样做。还有其他方法吗?
对于一些上下文,此特定用法在Silverlight 5应用程序中。我仍然在探索这与普通.Net或JS使用的差异。
答案 0 :(得分:2)
使用AutoTransport:
var httpClient = new DefaultHttpClient();
_hubCn.Start(new AutoTransport(httpClient,
new IClientTransport[]
{
new WebSocketTransport(httpClient),
new LongPollingTransport(httpClient)
}));
如source code中所述,您提供的列表是:
后备顺序的传输列表
答案 1 :(得分:1)
如果您在启动与.Net客户端的连接时没有提供传输,它将使用所谓的AutoTransport
,它基本上会尝试不同的传输,直到找到有效的传输。请注意,根据平台(例如.NET Framework与Silverlight / Portable)的不同,AutoTransport可用的传输列表可能不同(目前您将获得.NET上的WebSockets,ServerSentEvents和LongPolling以及Portable上的ServerSentEvents和LongPolling)。但是,如果要排除(或添加 - 例如,存在WebSocket传输的Windows Phone 8.1(通用应用程序)特定实现)传输,您可以手动创建AutoTransport
并提供要使用的传输。