2009-08-19 2 views
1

Я новичок в Flash. Я планирую создать игровой клиент в Flash (работает в браузере), который должен поговорить с сервером, написанным на Java. Соединение между клиентом и сервером должно быть постоянным.Постоянное соединение между клиентом Flash и сервером Java

Я знаю XMLSocket - это единственный способ пойти? Любые рекомендации?

Спасибо!

ответ

1

Класс Socket, который позволяет использовать реальный TCP при разговоре с сервером. Даунсайд - вам придется реализовать протокол самостоятельно (в большинстве случаев он реализует HTTP-клиент. Может быть, кто-то уже это сделал)

+0

Из того, что я понимаю, класс Socket доступен в AS3, который является Flash Player 9 и выше - любая идея о том, насколько большой сегмент рынка, который сможет использовать что-то, написанное в AS3? – byteclub

+0

Отвечая на мой собственный комментарий здесь, извините: посмотрел статистику на adobe.com, похоже, что флеш-плеер 9 довольно вездесущ, до 98,8% инсталляций его используют. – byteclub

+0

Да за as3 - если только ваш единственный опыт программирования до сих пор был javascript as2, это не очень забавно для программиста, а инструменты для as3 намного лучше. (Flash Designers могут спорить иначе) –

0

Вы собираетесь создать игру для пристрастия и удовольствия? В противном случае я бы рекомендовал использовать существующий игровой сервер или, по крайней мере, изучить преимущества и недостатки этого варианта.

Я использовал SmartfoxServer (http://www.smartfoxserver.com) в нескольких проектах, это не идеально, но отнимает много ваших проблем (и вы можете писать расширения в java, если хотите). Я думаю, что ElectroServer http://www.electro-server.com/ похож, и вы также можете посмотреть на сервере с открытым исходным кодом Red5 http://osflash.org/red5

Кроме того, посылая материал в XML можно также исследовать, если вы можете использовать AMF для передачи данных, он может быть меньше (как в меньших бит).

+0

Это порт существующей многопользовательской игры для iPhone. Серверы уже есть.Просто попробуйте выяснить, нужен ли нам другой интерфейс для реализации Flash или можно просто повторно реализовать и повторно использовать существующий протокол (что может сэкономить время) – byteclub

+0

Сокеты во флэш-памяти сложны (в основном часть ошибок обнаружения) xmlsocket, вероятно, лучший вариант. Следите за тем, кто стоит за ограничительными брандмауэрами, вам может понадобиться опрос http-ответа, если вы хотите поддержать их. –

0

Убедитесь, что на сервере имеется файл политики безопасности. Посмотрите на это SO question/answer для получения дополнительной информации.

0

Я экспериментировал с Socket-связью между Flash и Java. Одним из преимуществ Socket over XMLSocket является пропускная способность, поскольку вы можете записывать двоичные данные. Так, например, вы можете отправить позицию одного объекта как:

writeShort(entity.id); writeFloat(entity.x); writeFloat(entity.y); 

Это всего 10 байт.

Java поддерживает аналогичные примитивные функции чтения/записи с помощью DataStreams или ByteBuffers.

На самом деле, серверная сторона вещей сложнее, чем сторона Flash, потому что вам нужно выбирать между старыми сокетами io Java и новыми io-методами. Новые методы io имеют намного лучшую производительность, но сложнее и, очевидно, заполнены gotchas.

Смежные вопросы