Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.03.2010, 12:22
manuscripti вне форума Посмотреть профиль Отправить личное сообщение для manuscripti Найти все сообщения от manuscripti
  № 1  
Ответить с цитированием
manuscripti

Регистрация: Dec 2009
Сообщений: 77
По умолчанию as3 + сокет

пишу as3 сокет клиента
сервер на java

подскажите как обычно для многопользовательской игры делают с помощью сокетов непрерывный обмен данными

я имею ввиду общий философский подход

то есть 10 раз в секунду от as3 идет запрос на сервер

или делается какое либо событие

или как то по другому?

Добавлено через 4 минуты
в частности если на java сервере происходит какое либо событие
то как as3 об этом узнает = постоянно опрашивая сервер
или будет брать данные по факту какого либо as3 события?

Старый 27.03.2010, 13:21
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Если что-то произошло на сервере - сервер должен отослать сообщение об этом флешке, и наоборот. Сокет-соединение непрерывно, по этому (в случае с java) нет необходимости что-то отсылать каждые 2 секунды. Только по событию. Правда в java нет такой модели событий как во flash, но сути это не меняет
__________________
...вселенская грусть

Старый 27.03.2010, 13:52
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 3  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
Цитата:
Сообщение от manuscripti Посмотреть сообщение
пишу as3 сокет клиента
сервер на java
в частности если на java сервере происходит какое либо событие
то как as3 об этом узнает = постоянно опрашивая сервер
или будет брать данные по факту какого либо as3 события?
если в сокет чото упало, возникает событие. Если вы слушаете это событие, то узнаете первым о прибытии новых данных в сокет.
потому все, что нужно знать серверу, пихайте в сокет на клиенте
все, что нужно знать клиенту, пихайте в сокет на сервере

не пользуйте подход "сериализации" данных, передаваемых серверу или обратно, как это делает протокол AMF. Протокол был придуман голодным программистом и продан за 1 рупию голодному менеджеру

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

Старый 27.03.2010, 13:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от Crenth Посмотреть сообщение
не пользуйте подход "сериализации" данных, передаваемых серверу или обратно, как это делает протокол AMF.
Т. е. сериализованные данные в командах передавать ну вообще не труъ?

Старый 27.03.2010, 15:28
manuscripti вне форума Посмотреть профиль Отправить личное сообщение для manuscripti Найти все сообщения от manuscripti
  № 5  
Ответить с цитированием
manuscripti

Регистрация: Dec 2009
Сообщений: 77
имеется ввиду не работать с xml данными, а работать числами
под числа привязать всю логику?

Старый 27.03.2010, 15:35
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 6  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
"сериализации" данных, передаваемых серверу или обратно, как это делает протокол AMF
Цитата:
имеется ввиду не работать с xml данными
Ну, сериализация - это же не обязательно XML. Можно и в свой формат.
__________________
...вселенская грусть

Старый 27.03.2010, 15:45
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 7  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
Если вы пишете свой сервер и юзаете свой сокет на АС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 будет означать движение вправо вверх

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


Последний раз редактировалось Crenth; 27.03.2010 в 15:51.
Старый 27.03.2010, 15:49
manuscripti вне форума Посмотреть профиль Отправить личное сообщение для manuscripti Найти все сообщения от manuscripti
  № 8  
Ответить с цитированием
manuscripti

Регистрация: Dec 2009
Сообщений: 77
а какая организация команд на as3 будет слушать сокет?
как это будет выглядеть?

Старый 27.03.2010, 15:58
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 9  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
тут все подробно описано
http://help.adobe.com/ru_RU/ActionSc...0204-7cf7.html

Старый 27.03.2010, 20:27
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Crenth, это всё понятно, непонятно только, причем тут вообще сериализация. Сериализовать можно с тем же успехом и в байтики.

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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