SignalR android SDK仅适用于WiFi连接

需要说明的是,这个问题引用了针对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

最佳答案 不明白为什么,但似乎是运输选择导致3g失败.

当我在AutomaticTransport中注释掉一个或另一个(serversentevents或longpolling)时,它工作得很好……

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