Нет связи с некоторыми устройствами Android

R2D2

Member
Добрый день.
Мы разрабатываем приложение под андройд, на данный момент оно проходит стадию тестирования...Мобильное приложение соединяется с сервером через WCS. Наша серверная часть более менее отлажена и общается с удаленным устройством посредством REST WCS.
Вопрос: у части устройств приложение не получает данные через WCS (например huawei mate 20 pro, некоторые телефоны redmi Note 9 pro), библиотеки стоят самые свежие( пробывали и версию 1.0 и 1.1) - результат одинаковый. Платный ssl сертификат на сервер тоже установлен.
Через Android Studio мы видим что WebSocket приходят но приложение постоянно получает события onDisconnect и что то крашится внутри библиотеки:

Часть лога с дисконнектом и крашем прилагаю в файле
 

Attachments

R2D2

Member
В манифесте тоже прописано:
android:networkSecurityConfig="@xml/network_security_config"

сам файл настроек безопасности соединения:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">XXX.XXX.XXX.155</domain>
<domain includeSubdomains="true">xxxxxxx.ru</domain>
</domain-config>
</network-security-config>
 

Max

Administrator
Staff member
Code:
2021-02-18 13:46:05.698 6035-6452/com.xxxxxx.xxxxxxx D/WebSocketChannelClient: WebSocket connection closed. Code: 1000. Reason: Disconnected by error on REST method /connect. State: CONNECTED
Такие логи говорят о следующем:
1. WCS не смог соединиться по REST (HTTP) с вашим бэкендом.
2. WCS смог соединиться с бэкендом, но произошла ошибка.

Для отладки
1. Переключите работу с бэкендом на HTTP (если до этого она шла по HTTPS).
2. Снимите дамп HTTP трафика и откройте в Wireshark, например
Code:
tcpdump port 80 -w log.pcap
В этом дампе вы увидите все попытки вызвать REST /connect на бэкенде.
Убедитесь что на каждый Request /connect приходит Response 200 ОК. Если это не так, то проблема где-то на бэкенде, который отрабатывает интеграционные REST запросы и такие запросы сразу будет видно в дампе.
Подробнее здесь:
Если же на каждый /connect корректно приходит 200 OK, то прооблема может быть на стороне WCS. Но более вероятно на бэкенде.
 

R2D2

Member
Я с вами не соглашусь, бакенду без разницы с какого телефона идет подключения...В тоже самое время несколько десятков других телефонов других марок - прекрасно работают с бакендом.
Дамп я обязательно сниму, как только мне повторно принесут неработающий экземпляр
 

R2D2

Member
Скажите если бакенд общается с WCS через http, то может ли система безопасности телефона - отрубать трафик?
 

Max

Administrator
Staff member
Скажите если бакенд общается с WCS через http, то может ли система безопасности телефона - отрубать трафик?
Телефон не видит трафика между WCS и бэкендом, он общается только с WCS по websocket. Поэтому система безопасности телефона никак не может повлиять на взаимодействие между WCS и бэкендом.
Однако, если содержимое сообщения connect будет каким-то образом испорчено на стороне телефона, то есть вероятность, что бэкенд его отклонит.
 
Top