Как устанавливаются таймауты для веб-сокетов AndroidAsync?

Я пытаюсь изменить время ожидания подключения по умолчанию для AndroidAsync, равное 30 секундам. Это рабочая версия со временем ожидания по умолчанию:

AsyncHttpClient.getDefaultInstance().websocket(connectionURI.toString(), null, this);

Я хотел бы изменить время ожидания. Это то, что я ожидал работать:

int timeout_ms = 20000;
AsyncHttpGet request = new AsyncHttpGet(connectionURI.toString());
request.setTimeout(timeout_ms);
AsyncHttpClient.getDefaultInstance().websocket(request, null, this);

Это приводит к java.lang.IllegalArgumentException: invalid uri=ws://exampleserver.com:80/test middlewares=[com.koushikdutta.async.http.HttpTransportMiddleware@1e2543c8, com.koushikdutta.async.http.spdy.SpdyMiddleware@2534fc61, com.koushikdutta.async.http.AsyncSocketMiddleware@107b3386]

Обратите внимание, что точно такая же строка connectionURI успешна в первом случае, но не во втором.

Есть ли способ изменить время ожидания веб-сокета AndroidAsync?

2 ответа

Этот взлом помог мне. Вам нужно пройти протокол http или htpps.

    AsyncHttpGet request = new AsyncHttpGet("ws://xxx.xxx.x.xx:8500".replace("ws://", "http://").replace("wss://", "https://"));
    request.setTimeout(3000);

    AsyncHttpClient asyncHttpClient = AsyncHttpClient.getDefaultInstance();
    asyncHttpClient.websocket(request, null, webSocketConnectCallback);

Кажется, это нерешенная проблема Koush https://github.com/koush/AndroidAsync/issues/340

Другие вопросы по тегам