самопроизвольное отключение WebSocket

156
23 декабря 2018, 07:20

Есть такой коннект Вебсоккета, использую библиотеку:

import com.neovisionaries.ws.client.*;
Long PING = 40000L;
Long PONG = 40000L
WebSocketFactory wsf = new WebSocketFactory();
Main.ws = wsf
        .createSocket(host)
        .addProtocol(protocol)
        .setUserInfo(username, password)
        .setPingInterval(PING)
        .setPongInterval(PONG)
        .connect()
;

Соккет работает нормально примерно 60 мин (пару дней было ровно 60 мин, сегодня время немного увеличилось (примерно 70 мин)), а потом идет зависание (обрыв). Со стороны сервера мне говорят что это с моей стороны или возможно проблемы с сетью (основываясь на код завершения на сервере)

Я уже пробовал слать самостоятельно пинг каждые 40сек и обнаружил это зависание получается так - шлется пинг, а ответа соответсвенно НЕТ. вот в этом месте оно просто зависает.

           .....
           if(Main.ws.isOpen()) {
                LOGGER.info("WS-PING sendState");
                Main.ws.sendPing(); // зависает здесь
            } 
            ......

Как это побороть?

Как вариант думал сделать реконнект - но оно зависает. Хотя есть еще вариант что проблема может быть связана с потоками, тк этот соккет пока не синхронизирован с основным потоком и завершается позже основного Main. Спасибо.

READ ALSO
Парсинг с jsoup

Парсинг с jsoup

Дело такоеПолучаю в ответе на запрос на сайт такой html код

164
Кастомный TabLayout с разной шириной TabItem

Кастомный TabLayout с разной шириной TabItem

Кто-нибудь может подсказать, как реализовать подобный TabLayout?

145
Как работает Intent?

Как работает Intent?

Обьясните пожалуйста каждую строчку что она делает

180