【问题标题】:SignalR android SDK only works on WiFi connectionSignalR android SDK 仅适用于 WiFi 连接
【发布时间】:2014-12-08 02:26:49
【问题描述】:

需要明确的是,这个问题是指 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 连接而完全没有问题……除非它在 ​​WiFi 上,否则只有 Android SDK 版本会呕吐。 SDK 是否有一些需要一定连接速度的内置机制?如果是这样,有没有办法覆盖该值?我的 3g 不是法拉利,但它的速度足以在网络版本上运行,而且运行良好....

有什么想法吗? TIA

【问题讨论】:

    标签: android signalr


    【解决方案1】:

    不知道为什么,但似乎是传输选择导致 3g 失败。

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

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

    【讨论】:

    • 谢谢帮助。对我和我的 3g 网络(希腊)来说,对上述内容进行了评论mTransports.add(new ServerSentEventsTransport(logger));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2011-07-07
    • 2023-04-02
    相关资源
    最近更新 更多