Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Взаимодействие Java + AS3.0 (http://www.flasher.ru/forum/showthread.php?t=173906)

OnEg1n 13.01.2012 19:48

Взаимодействие Java + AS3.0
 
Доброго времени суток.
Я разрабатываю игру. Часть с логикой написана на java, остальное на as3.0. Какие есть возможности соединения этих двух частей. Соккетное соединение не подходит, по некоторым причинам

goodguy 13.01.2012 19:53

через http
Цитата:

Соккетное соединение не подходит, по некоторым причинам
по каким?

OnEg1n 13.01.2012 20:09

Некоторые антивирусы не пропускают такое взаимодействие.

goodguy 13.01.2012 20:21

Любой нормальный антивирус пропускает. Если какой-то антивирь не пропускает, значит нужно снести его и поставить нормальный, а сокеты - это самое лучшее решение для онлайн игр.

Dukobpa3 13.01.2012 20:35

Цитата:

Любой нормальный антивирус пропускает. Если какой-то антивирь не пропускает, значит нужно снести его и поставить нормальный, а сокеты - это самое лучшее решение для онлайн игр.
Гениально)

Бывают ситуации когда сокет использовать невозможно со стороны клиента, таких мало, но если их будет даже 1-3 процента - в любом случае нужно этот момент учитывать, так как от этого одного процента выхватишь пачку негативных отзывов и еще минуст десяток процентов пользователей которые прочли и передумали играть.

Ява насколько я знаю использует Tomkat, он умеет работать в роли хттп-сервера. Нужно немного доработать напильником свой сервер и клиент чтобы сервер мог работать в режиме запрос-ответ. Ну и клиенту втулить проверку доступен ли сокет, и если не доступен коннектиться по хттп. Это стандартная практика.

goodguy 13.01.2012 21:17

ну, твой пост не менее гениален. Об http я написал еще во втором посте
или ты хочешь сказать, что сокеты - это не лучшее решение? )

Dukobpa3 13.01.2012 21:26

Всё что я хотел сказать я сказал) Просто стоит учитывать максимально возможное кол-во ситуаций.

А учитывать можно по-разному.
Или так как ты - сознательно послать пачку пользователей у которых сокеты не канают со словами "моя игра крутая, это ты дурак", или же сделать так чтобы и они могли пользоваться приложением.

Сокет от хттп отличается только двумя вещами:
1. Сокет может слать сообщения клиенту без запроса от него (используется не так уж и часто на самом то деле)
2. Экономится время на коннектах/дисконнектах, так как сокет всегда поключен если клиент онлайн.

Второй пункт очевиден, тут ничего не сделаешь.
Первый же вполне себе можно решить и посредством хттп, прикрутив на клиенте автообновление по таймеру.

твой ход ;)

goodguy 13.01.2012 21:32

Цитата:

Всё что я хотел сказать я сказал) Просто стоит учитывать максимально возможное кол-во ситуаций.
Кто ж спорит то =)
Цитата:

Или так как ты - сознательно послать пачку пользователей у которых сокеты не канают со словами "моя игра крутая, это ты дурак", или же сделать так чтобы и они могли пользоваться приложением.
ээ.. это ты сам уже додумал ;)
Нет, я гворю о том, что ставку прежде всего надо делать на сокеты, но не говорю, что при этом надо забить на все остальное (ну, разве что на хреновые антивирусы надо забить :D).
У автора то
Цитата:

Соккетное соединение не подходит, по некоторым причинам
А это не есть гуд.

Dukobpa3 13.01.2012 21:35

Цитата:

ээ.. это ты сам уже додумал
"Если какой-то антивирь не пропускает, значит нужно снести его и поставить нормальный"
разве не равно:
"моя игра крутая, это ты дурак"

С точки зрения пользователя по-моему как раз так и есть.

А заставить всех пользователей что-то там менять у них на компах чтоб поиграть(поменять антивирь к примеру)... Ну хз... Удачи.
Не вижу смысла продолжать тему.

goodguy 13.01.2012 21:50

Я несколько раз видел инструкции под приложениями как добавить порты в исключения для наиболее распространеных брандмауэйров.
С этим однозначно имеет смысл заморочиться. На счет "снести" эт я конечно утрирую :D
Потому что для рилтаймовых игр через http игра будет не айс. Таймер таймером, но когда сервер сам оповещает клиентов - это все равно лучше.

wvxvw 13.01.2012 23:43

Ну вы бы как-то описали ситуацию, что ли... Ява и Флеш ан одной машине, или на разных? Флеш - это в каком виде, в браузере, или прожектор, или AIR? HTTP - это такое же сокетное соединение, кстати сказать, только порт, через который оно происходит по умолчанию открыт. Можно попробовать другие порты, объяснить пользователю, как добавить исключение в firewall (антивирусы такими вещами не занимаются обычно...). В крайнем случае можно через 80-й порт установить непрерывное соединение (long polling).

Zebestov 14.01.2012 00:02

Dukobpa3, львиная доля игр, клиент-серверное сообщение которых построено на сокетах, не могут адекватно работать на http запросах. Ради полутора-двух залётных пассажиров, которые решили один раз в жизни поиграть по сети (ну иначе у них бы вопросов с сокетами скорее всего не возникло) городить дополнительные возможности? Да кому они сдались!

Dukobpa3 14.01.2012 00:05

@Zebestov - было бы действительно "городить" - согласился бы.
А так не настолько это сложная процедура, что касательно сервера, что касательно клиента. Но соглашусь, конечно - в любом случае это доп. время на разработку.

Котяра 14.01.2012 01:42

Вадим, да нифига там сложного нет. Один раз написал и используй.
Я делал так.
1.Коннектимся по сокету по порту N1 - если косяк пробуем ещё из списка.
2.Если с сокетами голяк пробуем Long polling.
Если с ним тоже беда.
3.Тогда ping.
На сервере тоже 1 раз всё делается. Протоколы никуда не меняются. Просто вместо отправки сообщения сразу по сокету - складываем его в очередь и ждём пока клиент не соизволит спросить "есть чо?".

Цитата:

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

Использовать в сокетах схему - запрос ответ - вообще упячка (хотя много где видел)

Dukobpa3 14.01.2012 02:13

Цитата:

Использовать в сокетах схему - запрос ответ - вообще упячка (хотя много где видел)
Ну а как тогда если надо обновить какую-то информацию не часто изменяемую?
Ну например открываю окошко лобби, мне нужно один раз запросить список активных игроков. Вся игра работает через сокет. Посылаю серверу команду: "я открыл лобби" - он мне шлет в ответ список активных игроков.

Или имелся в виду запрос-ответ с ожиданием ответа после запроса?

Просто у нас тоже есть много где система запрос-ответ, только это всё асинхронно. На сервер поступают команды по мере надобности, а сервер в свою очередь отправляет ответы когда готовы. Запрос не связан с конкретным ответом.

Котяра 14.01.2012 08:16

Сокет хорош полнодуплексом.
rpc для сокета - упячка.
запрос-ответ - упячка.
Надо:
клиент -> событие на сервер.
сервер -> событие(команду) на клиент
события содержат инфу


Часовой пояс GMT +4, время: 23:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.