在SignalR .Net客户端中明确设置多个传输

时间:2014-09-09 20:37:58

标签: c# signalr signalr-hub signalr.client

是否可以在SignalR .Net客户端中明确设置两个(或更多)传输?

我可以使用以下代码设置单个传输:

_hubCn.Start(new LongPollingTransport());

在Javascript客户端中,可以使用:

完成
connection.start({ transport: ['webSockets','longPolling'] });

然而,我还没有在.Net客户端上发现过载,允许这样做。还有其他方法吗?

对于一些上下文,此特定用法在Silverlight 5应用程序中。我仍然在探索这与普通.Net或JS使用的差异。

2 个答案:

答案 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并提供要使用的传输。