Двусторонняя push-связь в режиме реального времени через GPRS?

Вот пример использования из документа, который описывает ИТ-система Volvo Buses:

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

Отклонение транспортного средства от расписания, отображаемое в режиме реального времени, как в реальных цифрах, так и в виде легко интерпретируемого графического «метра». Информация постоянно обновляется.

Вся эта информация отправляется на бортовой компьютер из центральной системы через GPRS.

Меня интересует технология, позволяющая осуществлять такую ​​коммуникацию на основе событий. По сути, водитель получает информацию о расписании в режиме реального времени или произвольные сообщения от диспетчера в режиме реального времени, а не в режиме запланированных обновлений. Насколько я понимаю, это означает, что программное обеспечение бортового компьютера каким-то образом "подписано" на события, исходящие из Центральной Системы (сервера).

Я знаю, что для обеспечения такой связи в реальном времени между сервером и веб-браузером на основе событий необходимо Можно использовать технологию Comet.

Но как можно добиться той же функциональности для использования между сервером и бортовым компьютером с помощью какого-либо клиентского программного обеспечения Qt/Embedded Qt вместо обычного веб-браузера?

Существует ли какой-либо стандарт Comet-подобной технологии для приложений, не основанных на веб-браузере?

Небольшой дополнительный вопрос: создает ли GPRS-соединение какие-либо проблемы в этом случае? (например, при подключении через GPRS/3G мой Android-смартфон может потерять некоторые сообщения чата XMPP, некоторые из них никогда не доставляются).


person skanatek    schedule 08.05.2012    source источник
comment
Что касается вашего дополнительного вопроса, просто сделайте клиентскую часть устойчивой к отброшенным сообщениям, например, игнорируя их, интерполируя, запрашивая повторные сообщения и т. д.   -  person Cylindric    schedule 08.05.2012
comment
Что делать, если сервер отправляет сообщение, а клиент никогда его не получает?   -  person skanatek    schedule 08.05.2012
comment
Если это критично, клиент должен подтверждать сообщения по мере их получения, а затем сервер решает, что делать, если подтверждение не получено.   -  person Cylindric    schedule 08.05.2012
comment
Ладно, теперь понял, спасибо.   -  person skanatek    schedule 08.05.2012
comment
Не всегда легко решить проблему. Мне проще, если вы можете достичь компромиссной ситуации, когда, возможно, сервер отправляет обновление каждые n секунд (где n зависит от требований) и включает серийный номер некоторых Сортировать. Затем клиент знает, что пропустил сообщение, и может либо запаниковать, либо запросить повторение, либо просто продолжать, несмотря ни на что. Что он делает, зависит от требований. Если это легкая ракета-носитель номер три, я полагаю, ей нужно знать об этом ПРЯМО СЕЙЧАС, но если ваша следующая остановка — Станция, то можно просто дождаться следующего сообщения.   -  person Cylindric    schedule 08.05.2012