![]() |
as3 + сокет
пишу as3 сокет клиента
сервер на java подскажите как обычно для многопользовательской игры делают с помощью сокетов непрерывный обмен данными я имею ввиду общий философский подход то есть 10 раз в секунду от as3 идет запрос на сервер или делается какое либо событие или как то по другому? Добавлено через 4 минуты в частности если на java сервере происходит какое либо событие то как as3 об этом узнает = постоянно опрашивая сервер или будет брать данные по факту какого либо as3 события? |
Если что-то произошло на сервере - сервер должен отослать сообщение об этом флешке, и наоборот. Сокет-соединение непрерывно, по этому (в случае с java) нет необходимости что-то отсылать каждые 2 секунды. Только по событию. Правда в java нет такой модели событий как во flash, но сути это не меняет
|
Цитата:
потому все, что нужно знать серверу, пихайте в сокет на клиенте все, что нужно знать клиенту, пихайте в сокет на сервере не пользуйте подход "сериализации" данных, передаваемых серверу или обратно, как это делает протокол AMF. Протокол был придуман голодным программистом и продан за 1 рупию голодному менеджеру Лучше используйте заранее определенный перечень команд, которые кодируются одним-двумя байтами + пара байт для передачи длины сообщения + само сообщение. будет офигенцко быстро и правильно |
Цитата:
|
имеется ввиду не работать с xml данными, а работать числами
под числа привязать всю логику? |
Цитата:
Цитата:
|
Если вы пишете свой сервер и юзаете свой сокет на АС3, то не гут пользовать AMF.
Если вы пользуетесь средствами АС3, то выбора нет - придется пользовать :) Сериализация команды connect в AMF0 выглядит примерно так 0x03 0x00 0x07 'C' 'o' 'n' 'n' 'e' 'c' 't' . т.е. байт, обозначающий тип данных + 2 байта длина данных + сами данные. (плюс 12 байт заголовка к пакету) Идею Коннекта можно передать на другую сторону меньшим числом байт. Нормальный программер бы уложил все в 2 байта (1 байт тип данных=команда + код команды 1 байт) или в 3 байта (если бы хотел сделать запас на 65 тысяч команд) придумайте свой протокол (это не сложно) и вперед. Опишите все, что должен знать сервер о клиенте и наоборот. Каждой команде назначьте отдельное значение от 0 до 255 (или от 0 до 65535). В зависимости от команды (по вашей задумке) ее будет сопровождать некоторое количество данных (или не будет). Т.е. если например пришла команда 0x01, а мы знаем что за этой командой не должно быть данных, стало быть следующий байт в сокете - новая команда :) Если команду сопровождает N байт, то за кодом команды пишем 2 байта - длина данных, затем сами данные. И так далее помните, что некоторые дискретные весчи удобно передавать битами. например, если принять, что единица в нулевом бите означает движение вправо, а единица в первом бите означает движение вверх, то число 0х03 будет означать движение вправо вверх когда разрабатываете клиент-серверную технологию, не думайте, что у всех мегабитный анлим. Думайте о людях, экономьте их трафик и процессорное время :) |
а какая организация команд на as3 будет слушать сокет?
как это будет выглядеть? |
тут все подробно описано
http://help.adobe.com/ru_RU/ActionSc...0204-7cf7.html |
Crenth, это всё понятно, непонятно только, причем тут вообще сериализация. Сериализовать можно с тем же успехом и в байтики.
|
| Часовой пояс GMT +4, время: 06:34. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.