SignalR android SDK仅适用于WiFi连接

时间:2014-10-13 13:39:56

标签: android signalr

要明确的是,这个问题引用了针对SignalR的Android SDK ...而不是在Android设备上的浏览器中运行的SignalR。

出于某种原因,在使用我的无线数据网络(3g)时无法建立与服务器的连接。我可以通过Web服务连接到我的服务器并接收JSON数据字符串,但SignalR将无法连接。

SignalRFuture<Void> awaitConnection = connection.start();
            try {
                awaitConnection.get(5000, TimeUnit.MILLISECONDS);
            } catch (InterruptedException e) {
                // Handle ...
            } catch (ExecutionException e) {
                // Handle ...
            } catch (TimeoutException e) {
                Log.d(TAGSR,"it timed out");
                e.printStackTrace();
            }

当我不在WiFi上时,这总是会遇到超时异常...即使我把它碰到一分钟+。奇怪的是,一旦超时,其他上述数据立即加载。如果我在手机上打开WiFi,这根本不会有任何问题。

在我的浏览器上使用相同的SignalR连接,我可以通过3g连接完全没有问题...只有Android SDK版本才能解决,除非它在WiFi上。是否有一些内置的SDK机制需要一定的连接速度?如果是这样,有没有办法覆盖该值?我的3g不是法拉利,但它足够快,可以在网络版上工作,并且工作得很好....

任何想法? TIA

1 个答案:

答案 0 :(得分:2)

不知道为什么,但看来它是导致3g失败的运输选择。

当我在AutomaticTransport中注释掉一个或另一个(serversentevents或longpolling)时,它工作正常......

private void initialize(Logger logger) {
    mTransports = new ArrayList<ClientTransport>();
    mTransports.add(new ServerSentEventsTransport(logger));
    //mTransports.add(new LongPollingTransport(logger));
}