![]() |
Взаимодействие Java + AS3.0
Доброго времени суток.
Я разрабатываю игру. Часть с логикой написана на java, остальное на as3.0. Какие есть возможности соединения этих двух частей. Соккетное соединение не подходит, по некоторым причинам |
через http
Цитата:
|
Некоторые антивирусы не пропускают такое взаимодействие.
|
Любой нормальный антивирус пропускает. Если какой-то антивирь не пропускает, значит нужно снести его и поставить нормальный, а сокеты - это самое лучшее решение для онлайн игр.
|
Цитата:
Бывают ситуации когда сокет использовать невозможно со стороны клиента, таких мало, но если их будет даже 1-3 процента - в любом случае нужно этот момент учитывать, так как от этого одного процента выхватишь пачку негативных отзывов и еще минуст десяток процентов пользователей которые прочли и передумали играть. Ява насколько я знаю использует Tomkat, он умеет работать в роли хттп-сервера. Нужно немного доработать напильником свой сервер и клиент чтобы сервер мог работать в режиме запрос-ответ. Ну и клиенту втулить проверку доступен ли сокет, и если не доступен коннектиться по хттп. Это стандартная практика. |
ну, твой пост не менее гениален. Об http я написал еще во втором посте
или ты хочешь сказать, что сокеты - это не лучшее решение? ) |
Всё что я хотел сказать я сказал) Просто стоит учитывать максимально возможное кол-во ситуаций.
А учитывать можно по-разному. Или так как ты - сознательно послать пачку пользователей у которых сокеты не канают со словами "моя игра крутая, это ты дурак", или же сделать так чтобы и они могли пользоваться приложением. Сокет от хттп отличается только двумя вещами: 1. Сокет может слать сообщения клиенту без запроса от него (используется не так уж и часто на самом то деле) 2. Экономится время на коннектах/дисконнектах, так как сокет всегда поключен если клиент онлайн. Второй пункт очевиден, тут ничего не сделаешь. Первый же вполне себе можно решить и посредством хттп, прикрутив на клиенте автообновление по таймеру. твой ход ;) |
Цитата:
Цитата:
Нет, я гворю о том, что ставку прежде всего надо делать на сокеты, но не говорю, что при этом надо забить на все остальное (ну, разве что на хреновые антивирусы надо забить :D). У автора то Цитата:
|
Цитата:
разве не равно: "моя игра крутая, это ты дурак" С точки зрения пользователя по-моему как раз так и есть. А заставить всех пользователей что-то там менять у них на компах чтоб поиграть(поменять антивирь к примеру)... Ну хз... Удачи. Не вижу смысла продолжать тему. |
Я несколько раз видел инструкции под приложениями как добавить порты в исключения для наиболее распространеных брандмауэйров.
С этим однозначно имеет смысл заморочиться. На счет "снести" эт я конечно утрирую :D Потому что для рилтаймовых игр через http игра будет не айс. Таймер таймером, но когда сервер сам оповещает клиентов - это все равно лучше. |
Ну вы бы как-то описали ситуацию, что ли... Ява и Флеш ан одной машине, или на разных? Флеш - это в каком виде, в браузере, или прожектор, или AIR? HTTP - это такое же сокетное соединение, кстати сказать, только порт, через который оно происходит по умолчанию открыт. Можно попробовать другие порты, объяснить пользователю, как добавить исключение в firewall (антивирусы такими вещами не занимаются обычно...). В крайнем случае можно через 80-й порт установить непрерывное соединение (long polling).
|
Dukobpa3, львиная доля игр, клиент-серверное сообщение которых построено на сокетах, не могут адекватно работать на http запросах. Ради полутора-двух залётных пассажиров, которые решили один раз в жизни поиграть по сети (ну иначе у них бы вопросов с сокетами скорее всего не возникло) городить дополнительные возможности? Да кому они сдались!
|
@Zebestov - было бы действительно "городить" - согласился бы.
А так не настолько это сложная процедура, что касательно сервера, что касательно клиента. Но соглашусь, конечно - в любом случае это доп. время на разработку. |
Вадим, да нифига там сложного нет. Один раз написал и используй.
Я делал так. 1.Коннектимся по сокету по порту N1 - если косяк пробуем ещё из списка. 2.Если с сокетами голяк пробуем Long polling. Если с ним тоже беда. 3.Тогда ping. На сервере тоже 1 раз всё делается. Протоколы никуда не меняются. Просто вместо отправки сообщения сразу по сокету - складываем его в очередь и ждём пока клиент не соизволит спросить "есть чо?". Цитата:
Если это не жесткий реалтайм, конечно. Использовать в сокетах схему - запрос ответ - вообще упячка (хотя много где видел) |
Цитата:
Ну например открываю окошко лобби, мне нужно один раз запросить список активных игроков. Вся игра работает через сокет. Посылаю серверу команду: "я открыл лобби" - он мне шлет в ответ список активных игроков. Или имелся в виду запрос-ответ с ожиданием ответа после запроса? Просто у нас тоже есть много где система запрос-ответ, только это всё асинхронно. На сервер поступают команды по мере надобности, а сервер в свою очередь отправляет ответы когда готовы. Запрос не связан с конкретным ответом. |
Сокет хорош полнодуплексом.
rpc для сокета - упячка. запрос-ответ - упячка. Надо: клиент -> событие на сервер. сервер -> событие(команду) на клиент события содержат инфу |
| Часовой пояс GMT +4, время: 23:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.