2014-01-29 2 views
1

Мне нужно поддерживать соединение в гнезде Java-сервера из моего приложения для Android. (Я хотел бы поддерживать это соединение в приложении Android). В качестве временного решения я периодически обновляю соединение каждые 1 или 2 минуты. (Я устанавливаю соединение между моим приложением и сервером сокета каждый раз, чтобы гарантировать, что соединение поддерживается) Есть ли еще одно решение?Как поддерживать соединение между клиентом android и сервером сокета?

Мне очень нужна ваша помощь. Благодарю.

ответ

3

Лучшая модель основана на push-уведомлениях.

Ваше устройство Android регистрируется на вашем сервере через службу Google GCM (https://developer.android.com/google/gcm/index.html). Всякий раз, когда у сервера были данные для вашего клиента, он подталкивает его через GCM.

Использование GCM избавит вас от управления живым подключением и гарантией доставки сообщений.

Если у клиента есть данные для сервера, он может подключаться-отправлять-отключать.

Вышеупомянутая модель работает НА ОСНОВЕ НАДЕЖНО лучше, а также более эффективна в работе аккумулятора, более надежна и меньше кода. Кроме того, это позволяет автоматически запускать ваше приложение, когда поступает входящее сообщение сервера, поэтому вам не нужно, чтобы «служба переднего плана» работала в ожидании сообщений, занимала телефонные ресурсы и показывала постоянное уведомление.

Для поддержания соединения с использованием сокетов, основанных на TCP, вы должны отправлять сообщение keep-alive каждый раз в то время. Если это сообщение не будет отправлено, вы восстановите соединение. Для достижения наилучших результатов попросите клиента Android сохранить работоспособность. Кроме того, у вас есть состояние подключения монитора Android, поэтому вы можете узнать в реальном времени, если ваше соединение опустилось, или вверх. Типичное устройство для Android может измениться с 3G на Wi-Fi, потерять связь под землей и т. Д.

Смежные вопросы