ChatNetworkConfig
ChatNetworkConfig объединяет сетевые настройки SDK и используется в поле networkConfig класса ChatConfig.
Адреса серверов backend задаются отдельно в transport_config. Бизнес-настройки чата (вложения, поле ввода, push) — в chat_config.
Параметры
| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
httpConfig | HTTPConfig | Нет (default) | Настройки HTTP-клиента: таймауты соединения, скачивания и выгрузки файлов |
wsConfig | WSConfig | Нет (default) | Настройки WebSocket-подключения: таймаут соединения, таймаут чтения/записи фреймов, ping-интервал |
sslPinning | SSLPinningConfig | Нет (default) | Сертификаты для pinning и флаг отключения проверки сертификата |
Все таймауты в HTTPConfig и WSConfig — в секундах.
Значения по умолчанию
| Класс | Параметр | По умолч. | Описание |
|---|---|---|---|
HTTPConfig | connectionTimeout | 30 сек | Таймаут установки HTTP-соединения |
HTTPConfig | downloadTimeout | 30 сек | Таймаут скачивания файлов |
HTTPConfig | uploadTimeout | 30 сек | Таймаут выгрузки файлов |
WSConfig | connectionTimeout | 30 сек | Таймаут установки WebSocket-соединения |
WSConfig | sendTimeout | 30 сек | Таймаут чтения/записи WebSocket-фреймов |
WSConfig | pingInterval | 30 сек | Интервал keepalive ping/pong |
WSConfig | isReconnectEnabled | false | Автоматическое переподключение к WebSocket при разрыве соединения |
WSConfig | maxReconnectAttempts | 10 | Максимальное число попыток переподключения после разрыва соединения. Значения меньше 1 приводятся к 1 |
Автоматическое переподключение к WebSocket (reconnect)
При isReconnectEnabled = true SDK выполняет повторные попытки подключения к WebSocket после разрыва соединения. Используется экспоненциальный backoff: интервал между попытками удваивается с каждой итерацией (1, 2, 4, 8, 16, 32 секунды) и ограничен сверху 60 секундами. При значении maxReconnectAttempts = 10 суммарное время восстановления составит около 5 минут — после этого SDK прекращает попытки и сообщает об ошибке через ChatCenterUIListener.networkErrorReceived(error).
val networkConfig = ChatNetworkConfig(
wsConfig = WSConfig(
isReconnectEnabled = true,
maxReconnectAttempts = 10
)
)
Пока идёт переподключение, на экране чата:
- в тулбаре отображается заголовок «Подключение...» (строка
ecc_chat_title_connecting); - кнопки отправки сообщения и прикрепления файла заблокированы до восстановления соединения; текст в поле ввода остаётся доступным для редактирования.
Сообщения в очереди. Сообщения, отправленные пользователем во время разрыва соединения, остаются в локальной базе со статусом SENDING. После успешного восстановления соединения SDK продолжает работу в той же сессии — повторно вызывать authorize(user, auth) не требуется. Если переподключиться не удалось и попытки исчерпаны, статус сообщений переходит в FAILED, пользователь может повторить отправку из UI.
Работа в фоне. Если приложение уходит в background во время переподключения, SDK продолжает попытки в рамках стандартных ограничений Android (Doze, App Standby). Поведение в фоне дополнительно зависит от параметра ChatConfig.keepWebSocketActive — см. Известные ограничения.
Для production включайте автоматическое переподключение и оставляйте число попыток равным значению по умолчанию. Это устраняет необходимость в собственной логике повторного authorize при кратковременных сетевых сбоях.
WSConfig(
isReconnectEnabled = true,
maxReconnectAttempts = 10
)
Параметр задаётся до вызова init(...) / initAsync(...) — изменение после инициализации не вступает в силу (см. общую заметку «Изменение настроек» ниже). Пока isReconnectEnabled = true, переход состояний чата не прерывается по таймауту — окончательным признаком отказа служит исчерпание попыток подключения и событие networkErrorReceived.
SSL Pinning
val networkConfig = ChatNetworkConfig(
httpConfig = HTTPConfig(),
wsConfig = WSConfig(),
sslPinning = SSLPinningConfig(
certificates = arrayOf(ChatSSLCertificate(R.raw.my_cert)),
allowUntrustedCertificates = false
)
)
Параметр SSLPinningConfig | Тип | Обязательный | По умолч. | Описание |
|---|---|---|---|---|
certificates | Array<ChatSSLCertificate> | Нет | arrayOf() | Сертификаты для SSL pinning |
allowUntrustedCertificates | Boolean | Нет | false | Отключить проверку TLS-сертификата. Только для тестов |
Одновременная передача непустого массива certificates и allowUntrustedCertificates = true запрещена: конструктор SSLPinningConfig бросит IllegalArgumentException.
Допустимые сочетания:
certificates = arrayOf(...)+allowUntrustedCertificates = false— production со SSL pinning;certificates = arrayOf()(по умолчанию) +allowUntrustedCertificates = true— только для тестового окружения;certificates = arrayOf()+allowUntrustedCertificates = false— стандартная TLS-проверка без pinning (значения по умолчанию).
Поля ChatNetworkConfig следует задавать до вызова init(...) / initAsync(...). Поведение SDK при изменении настроек после инициализации не определено.
Связанные разделы
- ChatConfig — где передаётся
networkConfig. - Известные ограничения SDK.
- Troubleshooting → WebSocket-разрывы — диагностика частых переподключений.