SignalR安卓SDK仅适用于WiFi连接



要明确的是,这个问题是指SignalR的Android SDK。。。而不是在安卓设备上的浏览器中运行的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连接,没有任何问题。。。只有安卓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));
}

最新更新