Использование сокетов TCP с вашим собственным протоколом свернуто гораздо лучше, чем HTTP, особенно с учетом характера ресурсов на мобильных устройствах.Erlang будет хорошо, но давайте начнем с вашего протокола.Erlang хорошо справляется с этим, особенно с выражениями Bit Syntax .Тем не менее, вы можете использовать простой текст по своему желанию.JSON (потребуется анализатор: Mochijson2.erl , найденный в библиотека Mochiweb ) и XML (потребуется анализатор: Erlsom ).
Я лично работал над проектом, в котором мы использовали необработанные сокеты TCP с нашими серверами Erlang и мобильными устройствами.Однако, в зависимости от выбранных номеров портов, маршрутизаторы на этом пути будут блокировать / отбрасывать пакеты в зависимости от политик безопасности поставщиков услуг.Тем не менее, я все еще думаю, что HTTP может работать.Люди общаются на Facebook Mobile, отправляют Twits и т. Д. Со своих устройств, и я уверен, что эти социальные движки используют какой-либо тип Long Polling или Server Push или что-то еще, но используют HTTP.В последнее время мобильные устройства стали более продвинутыми.
Использование собственного протокола на основе TCP сопряжено с рядом проблем: выбор порта, анализ данных как на клиенте, так и на сервере, проблемы безопасности и т. Д. Использование HTTP позволит вамПодумайте о реальной проблеме, чем тратить время на исправление проблем с протоколом на клиенте или сервере.Устройства, которые вы упомянули выше, такие как Android и IOS (Ipad, Iphone и т. Д.), Очень способны обрабатывать HTTP COMET (длинный опрос).Если вы соблюдаете стандарты для веб-приложений на мобильных устройствах , а также W3C Best Web Practices , ваше приложение будетхорошо функционируют, используя HTTP.
Использование методов HTTP ускорит работу, и в SDK этих устройств имеется множество библиотек, которые помогут вам создать прототип решения, которое вы хотите, по сравнению с ситуацией использования собственного TCPпростой текстовый протокол.Чтобы подкрепить эти рассуждения, просмотрите эти W3C выводы .
Позвольте мне наконец поговорить о преимуществах HTTP на этих устройствах.Если вы хотите использовать веб-технологии для мобильных устройств, такие как Opera Widgets , Phone Gap , SenchaКоснитесь и JQuery Mobile , в их SDK и библиотеках уже есть оптимизация, или есть хорошо документированные способы повышения эффективности вашего приложения.Кроме того, эти технологии имеют API для доступа к ресурсам собственных устройств, таким как проверка заряда батареи, SMS, MMS, каналы вещания GSM, контакты, освещение, GPS и память;все как API в классах JavaScript.Это станет трудным (негибким), если вы будете использовать родные языки программирования, такие как J2ME , Mobile Python или SymbianC ++ / Qt по сравнению с использованием веб-технологий, таких как CSS3, HTML5 и инструменты JavaScript, упомянутые выше.Использование веб-инструментов, упомянутых выше, сделает ваше приложение легко распространяемым, скажем, Магазин Ovi или Apple Store , исходя из опыта.
Обратите внимание, что если вы используете HTTP, тестирование будет простым.Все, что вам нужно, это общедоступный домен, поэтому виджеты на мобильном устройстве обнаруживают ваши серверы через Интернет.Если вы используете свой собственный протокол TCP / IP, сетевые маршрутизаторы могут нарушать работу используемого вами номера порта, если только вы не планируете использовать порт 80 или другой хорошо известный порт, но в этом случае IP-адрес вашего сервера все же необходимо будет сделать общедоступным.Существует короткий путь к этому: если вы разместите свой TCP-сервер за тем же Интернет-провайдером, что и тестируемое подключение к Интернету вашего мобильного устройства, маршрутизаторы Интернет-провайдера будут видеть источник и назначение как за своей сетью.Но в целом, есть проблемы с прокруткой собственного протокола.
Редактировать: Используя HTTP, вы получите REST .Веб-серверы, реализованные на языке Erlang (особенно челюсти и Mochiweb ), превосходят службы REST.Посмотрите на эту статью: RESTFUL сервисы с Yaws .Для mochiweb есть интересная статья о: Кометном приложении на миллион пользователей, использующем Mochiweb , которое разбито на 3 части.Кроме того, вы можете взглянуть на решение , данное этому вопросу .