Я не уверен, как это обрабатывается, поэтому я хотел спросить это.
Игры нового поколения MMORPG пытаются соединить свои системы торговых постов (аукционов) с веб-сервером, чтобы игроки могли использовать его без каких-либо хлопот даже со своих мобильных телефонов.
Последний пример — Guild Wars 2. По сути, система работает так:
1. You login a locally running client.
2. Open up the auction house in game client. (like HTML frames in this case)
3. The auction house connects to a webserver instead of sending packets to actual game server, like auctionhouse.guildwars2.com, which is also accessable via browser.
4. You want to sell your Sword, if the auction house successfully takes the Sword, it gets deleted from user inventory (client) and server, hence, client somehow gets informed by webserver reply.
Итак … я думаю …
Как локально работающий клиент (приложение C ++) узнает, продан ли товар или что-то не получилось? Возвращает ли веб-сервер вывод XML / JSON для проверки?
Мол, веб-сервер возвращает это;
// XML reply
<auctionResponse>
<itemId>184818478A</itemId>
<success>Successful</success>
<verifyKey>AG8918ADHWDHA</verifyKey>
</auctionResponse>
и клиент проверяет это как;
if(auctionHouse.auctionResponse == 'Successful')
{
if(auctionHouse.auctionResponse == getVerifyKeyFromServer()) //so the server confirms
{
DeleteFromInventory(auctionHouse.itemId); //item will be removed from user inventory
}
}
Я спросил об этом разработчика аукционного дома GW2, но он сказал, что не может поделиться информацией об этом.
Итак, в принципе, как это работает? Вывод JSON / XML через веб-сервер или что-то совершенно другое для переноса данных?
Любая помощь будет оценена.
Ps. Это не TCP-соединение. Сам аукционный дом работает на 80-м порту, а его бэкэнд закодирован на языке PHP.
Хотя я не знаю, как они это делают, я пишу подобные приложения на регулярной основе. Вот как это обычно работает:
PHP может использовать proc_open () для передачи к исполняемому процессу. Это означает, что вы можете отправлять команды в другое приложение из PHP и использовать результаты в своем PHP-скрипте. Это включает в себя пользовательские EXE написано во всем.
Другой вариант — это серверное приложение, работающее на локальном хосте или любом другом компьютере, где PHP использует CURL для связи с этим сервером. Результаты могут быть отправлены в формате JSON, XML, в виде обычного текста и т. Д.
Обе опции позволяют PHP-серверу работать на порте 80.
РЕДАКТИРОВАТЬ:
Я подозреваю, что загружаемое вами клиентское приложение обменивается данными с сервером, вероятно, сервером, который использует ту же базу данных, что и веб-приложение. Поэтому, когда вы покупаете что-то в клиенте, БД на их сервере обновляется, и их веб-приложение получает обновленную информацию.
Других решений пока нет …