LINUX.ORG.RU

С++ API в интернет

 , , , stateful


1

6

Допустим, есть сервер на крестах, и его нужно выставить каким-то чистым апи в интернет.

Как это правильно сделать?

Какие есть готовые либы?

Есть что-нибудь, что по классам сможет генератором сгенерить апи и документацию?

Есть что-нибудь мягкое и пушистое, или сразу по-хардкору, Xerces, SOAP, WSDL, ковровые бомбардировки, wget в цикле?

Особенно интересно что-то для быстрой коммуникации. Т.е. ладно, совсем риалтайм надо пейсать руками, но для просто быстрого обмена сообщениями. А то пока там мегабайтная иксымелина персидским царем Ксерксом просрется. Царь пошел в сортир жевать иксэмэлину, а у игроков воооот такущий пинг пока он свои королевские дела не доделает, а там может и смысл запроса был в no-op :) Этот запрос НЕ относится к первым абзацам про чистое API.

Боюсь спросить, может у крестовиков вообще какой-нибудь application server типа node.js для таких дел имеется, который в один клик в софтину вклеивается (запустить в отдельном треде или процессе, чтобы сидел там и похрюкивал)?

★★★★☆

Ответ на: комментарий от mannaz

А есть какая-то либа для (желательно кроссплатформенного) общения по сети, которая тебе нравится? Не в плане зеромкю, а вообще.

И да, что делать с натом? У меня игра, простой школоло 12 лет (начало освной аудитории лол) не асилит пойти в роутер и открыть порты, все эти автонастройки на роутере работают как говно (вот сейчас специально проверил: длинк за 800 рублей, говорит что будет сам рулить порты, на деле мюторрент который эту фичу стопудов умеет пробиться не может)

А на венду насрать, кстати. Мне очень нравится VisualStudio (извращенец, да), так что я надеялся на поддержку мелкомягкого компилятора. Все мои надежды рухнули, когда оказалось, что я треть кода написал на чем-то clang-специфичном, и теперь проще это выбросить целиком, чем отрефакторить =)

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)

Есть что-нибудь, что по классам сможет генератором сгенерить апи и документацию?

SOAP, WSDL

gsoap. По личным ощущениям довольно удобно.

staseg ★★★★★
()
Ответ на: комментарий от vromanov

Зависит от объема передаваемых данных. Еще соап подразумевает использование системы запрос-ответ, что тоже не каждой игрушке подойдет.

staseg ★★★★★
()
Ответ на: комментарий от stevejobs

Из высокоуровневых никакая не понравилась. В итоге остановился на собственном велосипеде. Ничего необычного: boost.asio на клиенте и, в основном, Netty на сервере. Для сериализации – protobuf. TCP_CORK по вкусу.

Про NAT не совсем понял. Если планируется отдельный сервер в интернетах, то проблемы нет. Если хочется прямых «коннектов» между игроками, то p2p в помощь: http://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment (C++ либы: libnice, pjnath, libjingle и т.п). Возможно, уже есть API, чтобы сразу между браузерами p2p-коннекты делать, т.к. ICE используется в WebRTC.

Но когда разрабатываешь игру (особенно, если это не сверхскоростной экшон), то принцип сетевого взаимодействия, мне кажется, совершенно не важен по сравнению со всем остальным. Подойдет все что угодно.

mannaz
()
Ответ на: комментарий от mannaz

данный комментарий получает премию за «самый правильный ответ».

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от mannaz

– Под виндой используется select.

О_о. Под виндой есть select()??

Pavval ★★★★★
()
Ответ на: комментарий от stevejobs

А почему ты хочешь генерировать по POD'ам документацию, а не по некоему описанию на формальном языке код для POD'ов и документацию? А методы к этим POD'ам добавлять через наследование…

anonymous
()
Ответ на: комментарий от stevejobs

Не всегда это хорошо.. У нас генератор написан на BASH. В итоге имеем 240 Кб генератора, 312 kb описаний и получаем на выходе 7.1 Мб сгенеренного кода и док с отличными возможностями расширения.

vromanov ★★★
()
18 ноября 2015 г.

Всё не читал, protobuf никто не советовал? Не готовое rpc конечно, но, зато мильён биндингов.

Если надо сильно латентно быстро то можно ещё sbe например, хотя оно больше под udp заточенно.

Какого класса игрушка то хоть?

pon4ik ★★★★★
()
Ответ на: комментарий от anonymous

Я вообще не понял, как я тут оказался, лол.

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.