Лучшая практика: отправляйте непрерывные данные (например, GPS Position) с iOS на другой клиент - PullRequest
1 голос
/ 11 ноября 2010

Я ищу лучшую практику для следующего сценария:

Мобильное устройство (iOS) отправляет свои (сенсорные) данные на другое устройство (iPad, ноутбук, ПК и т. Д.) Через Интернет в режиме реального времени .

Конечно, мне нужен веб-сервис, но, насколько я понимаю, веб-сервис "вызывается" и возвращает данные или принимает данные. Но мне требуется постоянный обмен данными датчиков между двумя устройствами практически в реальном времени. Я собираюсь реализовать что-то вроде многопользовательской онлайн-игры, как они это делают? Или служба Glympse?

Ответы [ 4 ]

2 голосов
/ 16 августа 2011

«Тот факт, что он называется GameKit, не означает, что его использование ограничено играми. Любые данные, которые вы хотите прокачать через это соединение, являются честной игрой»

Как верно.Название GameKit - это ужасное неправильное название, которое, к сожалению, снижает его значение. В этом наборе так много всего, что вы можете сделать для разработки серьезных приложений.

0 голосов
/ 09 января 2012

Вы можете использовать протокол XMPP для отправки / получения любых данных XML почти в реальном времени.Вам нужно будет создать чат-комнату, и каждому XMPP-клиенту (вашему приложению) достаточно будет войти в эту комнату.Сообщение, которое отправляется в комнату, будет доставлено каждому клиенту XMPP.

Информацию о протоколе и публичных серверах можно найти здесь: http://xmpp.org/
Хорошая книга по XMPP: http://download.cnet.com/XMPP-The-Definitive-Guide/3000-20412_4-75114351.html
СсылкаБесплатную библиотеку XMPP для iOS можно найти здесь: SDK для iOS messenger

0 голосов
/ 11 ноября 2010

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

То, что он называется GameKit, не означает, что его использование ограничено играми. Любые данные, которые вы хотите прокачать через это соединение, являются честной игрой (так сказать).

0 голосов
/ 11 ноября 2010

Я бы подошел так: создать в сети «сервер», который будет запускать какое-то приложение (например, CGI-скрипт) для сбора данных (сохранять их, возможно, в базе данных), а затем разрешать удаленное устройство для запрос это.

Это означает, что каждое устройство имеет «общеизвестную службу», к которой оно подключается - потенциально «входит в систему» ​​- и выбирает данные из.

Например, каждый «клиент» может указать свое «название судна» и местоположение GPS. Сценарий CGI на сервере просто поместит их в базу данных MySQL - в виде простой таблицы, содержащей «Имя судна» и «Местоположение».

Альтернативно, клиенты могут запрашивать и «вытягивать» GPS-местоположения для конкретного названия судна. Как простой CGI-скрипт, который будет принимать «Имя Vesel» в качестве значения и отправлять MySQL запрос в базу данных, чтобы вернуть «Местоположение». Он может отправить местоположение (и название судна) обратно в формате XML.

Клиент iPhone может использовать NSXMLParser - или даже клиент JavaScript «AJAX» может использовать собственные встроенные возможности XML-анализа для отправки запроса на одно (или несколько) судов и получения результатов.

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

...