Я занимаюсь разработкой приложения для iPhone, которое позволяет в основном выполнять серию действий. Эти серии предопределены и синхронизированы с общим сервером конфигурации.
Это приложение может быть запущено на нескольких устройствах одновременно. Предполагается, что все устройства имеют одинаковую последовательность действий, определенных на них. Все устройства считаются равными, здесь нет сервера и нескольких клиентов или что-то в этом роде.
(Только) одно из этих устройств используется человеком в любой момент времени, однако, возможно, что человек переключается на другое устройство в любой момент времени. Все «пассивные» устройства должны быть синхронизированы с активным, чтобы они отображали одно и то же действие.
Все должно происходить как можно более автоматически. Нет выбора устройств, конфигурации, все устройства в одной сети участвуют в одной серии действий.
Одним дополнительным требованием является то, что устройство может присоединиться во время презентации (серии действий) и должно перейти к текущему активному действию.
Прямо сейчас я вижу два варианта реализации сетевой / коммуникационной части этого:
Bonjour. Я реализовал работающий прототип, который может автоматически соединяться с одним (1) другим устройством в сети и связываться с ним. Я не уверен на данный момент, сколько дополнительной работы требует требование «нескольких устройств». Должен ли я открыть набор подключений для каждого устройства и вручную отправить события синхронизации всем им? Есть ли лучший способ или Bonjour предоставляет что-нибудь, чтобы помочь мне с этим? Что Bonjour предоставляет, учитывая, что я все равно хочу общаться с каждым устройством в сети?
Многоадресная рассылка с AsyncUdpSocket. Просто определите порт и отправьте события многоадресной синхронизации на этот порт. Я думаю, что основная проблема по сравнению с использованием Bonjour с tcp заключается в том, что соединение небезопасно и пакеты могут быть потеряны. Это, однако, в частной защищенной сети WLAN с низким трафиком, если это действительно будет проблемой. Есть ли другие недостатки, которых я не вижу? Потому что на данный момент это звучит как относительно простой вариант ...
Какой бы вы предложили? Или есть другая, лучшая альтернатива, о которой я не думаю?