2015-12-16 4 views
1

У меня есть клиент/серверное приложение, где клиенты - приложения для Android, а сервер развернут на Amazon AWS. Они взаимодействуют через REST через HTTPS, чтобы поддерживать связь конфиденциальной. Сервер находится на https: //server.example.com и использует сертификат SSL, который я создал и подписал сам. Клиент был написан для проверки этого сертификата и только для связи с сервером, использующим его.Коммуникация клиент/сервер заблокирована (возможно, через брандмауэр)

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

При сбое связи это происходит либо из-за таймаута на клиенте, либо с ошибкой, такой как «Не удалось разрешить host server.example.com».

Я считаю, что связь не удается из-за одной из следующих причин:

  • Андроида устройство не подключено к Интернету
  • брандмауэр или что-то подобное блокирует СООБЩЕНИЮ

Почему мы можем быть заблокированы? Возможно, потому, что мы используем SSL. Возможно, мы не в чьем-то белом списке. Я очень сомневаюсь, что мы попали в черный список.

Любые идеи о том, как действовать? Могу ли я как-то определить, почему связь не может пройти (я, очевидно, не имею доступа к устройствам моего пользователя). Есть ли что-то, что я могу сделать, чтобы добиться большего успеха в связке с клинтом/сервером?

ответ

0

Почему бы не реализовать проверку состояния сети для входа в сеть. Как таймаут, так и неспособный разрешить хозяин, похоже, скорее всего, проиграли соединение.

+0

Я не уверен, что вы предлагаете, можете ли вы объяснить дальше? Потеря связи, безусловно, является возможным объяснением, хотя я сомневаюсь, что это типичная причина. Мы сразу обращаемся к нашему серверу при запуске, и мы видели сбои для новых установленных устройств. Это странно, потому что для загрузки приложения требуется сетевое подключение. –

+0

Еще одна вещь, которую нужно проверить - это запросы таймаута, видимые в журнале доступа на AWS? Смысл в том, что вы можете проверить, был ли запрос от приложения, какой тайм-аут сделал или не дошел до вашего веб-сервера AWS. – prasunnair