2015-09-30 6 views
0

Этот вопрос может показаться немного абстрактным, ответил (но мой поиск не наткнулся на удобный ответ) или совсем не определен, но я постараюсь предоставить как можно больше информации ,Реакция удаленного сервера, вызванная с помощью клиента

Я создаю мобильное приложение, которое будет собирать и отправлять сенсорные данные на удаленный сервер. Удаленный сервер будет собирать все эти данные в базе данных mySQL и производить вычисления (не базу данных mysql, другой процесс/программу). Что я хочу знать:

После некоторых обновлений в базе данных можно выполнить отклик от сервера RESTful на определенный клиент (тот, кому понравилось последнее обновление), используя что-то вроде фона нить"? Или это должно быть сделано через соединение сокета через ответ сервера-клиента?

Некоторые замечания:

Я использую JavaEE, Spring MVC с Hibernate и котом (потому что я знаком с окружающей средой, хотя и в более асинхронном режиме).

Я думал, что это будет удобно, потому что схема SQL не слишком сложна, и проблемы безопасности и аутентификации не нужны (это прототип).

Также есть веб-страница с интерфейсом, которая должна будет визуализировать эти данные, поэтому такая внутренняя система будет выглядеть как хороший вариант для быстрой работы.

Наконец я увидел это решение:

Is there a way to 'listen' for a database event and update a page in real time?

Моя проблема заключается в том, что помимо страницы я хочу обновить стороне клиента с сообщениями от RESTful сервера.

Если все это выше, и более простое клиент-серверное приложение окажется лучше и менее сложным, пожалуйста, сообщите мне об этом.

Заранее спасибо.

ответ

0

Как правило, вы должны загрузить свои данные на ресурс на сервере (например, POST /widgets и сервер должен немедленно вернуться с 201 Created или (если созданием является слишком медленным и должно произойти позже) 202 Accepted статуса. Есть несколько подходов после этого случается, каждый из них имеет свои достоинства:

  • ПОЛЛИНГ - ответ сервера содержит поле местоположения, которое клиент может затем перейти к опрашивать, пока изменение не происходит (например, проверить наличие обновлений каждый второй) Это самый простой подход, и. достаточно эффективно, если вы эффективно используете кеширование HTTP, а среднее число проверок относительно невелико.
  • Push-уведомление - сервер отправляет push-уведомление, когда происходит изменение, генерируется отчет и т. Д. Очевидно, это требует, чтобы вы сохраняли данные клиента и требования к их уведомлению. Это, пожалуй, самый чистый подход, а также простой в масштабировании. В случае Android (также iOS) у вас есть бесплатные push-уведомления, доступные через Google Cloud Messaging.
  • Настроить постоянное соединение между клиентом и сервером, например. используя соединение Websocket или низкоуровневое TCP-соединение. Это должно дать самое быстрое время отклика, но, вероятно, будет утечкой на аккумулятор телефона, сложнее масштабировать на сервере и сложнее кодировать.
Смежные вопросы