要明确的是,这个问题是指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));
}