要明确的是,这个问题引用了针对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
答案 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));
}