Какой механизм для связи телефон-телефон(java) под nat'ом стоит использовать?
Добрый день, уважаемые разработчики.
Пишу приложение для связи между собой пар устройств (под управлением андроид), приложение ставится на оба телефона, связывание происходит в момент регистрации, после, когда оба телефона в сети они могу обмениваться служебной информацией (из которых грубо говоря генерируются небольшие push уведомления)
Требуется определиться с протоколом для связывания телефонов между собой.
Сокеты по причине блокировки nat'ом не подходят (с промежуточным звеном в виде сервера), рассматривал вариант с обходом nat'a при помощи STUN и прочего, но как я понял это работает далеко не всегда, причем не нашел даже примерной статистки в каком проценте случаев могут быть проблемы (да и не нашел подходящей библиотеки), стоит ли его использовать или нет?
Но больше мне приглянулся вариант с использованием в качестве транспортного протокола xmpp - у него помимо отсутствия проблем с nat'ом есть такое преимущество как отправка сообщений на выключенное устройство (с последующей передачей истории сообщений - команд), что сокращает объем кода. Не нашел только бесплатного хостинга что бы это дело попробовать. Есть такой? И стоит ли вообще использовать xmpp для этих целей?
Может быть есть третий вариант, который я упустил?