|
|
|||||
Socket или XMLSocket, что лучше?
Привет всем
В общем назрел такой вопрос. Я сейчас для передачи данных использую XMLSocket, ибо это просто, особенно для передачи текста. Но вот хочетсо узнать насчет скорости, у какого сокета задержка ниже? Или они передают данные одинаково(возможно различия в типах передаваеммых данных)? Очень хотелось бы узнать =) Уже сделал несколько реалтайм игрушек, в большинстве случаев при запросах создается довольно сильная задержка... Но в локальной сети играть можно х) Последний раз редактировалось PeTa4eK; 21.06.2010 в 09:40. |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Как вы сами говорите - в локальной сети играть можно. Значит дело не в задержках на стороне клиента.
Т.е. пофиг: Socket или XMLSocket. Для взрослых реалтайм игр существует большое количество алгоритмов для сокращения видимости задержек: предугадывание путей (аппроксимация), дельтирование непрерывных событий по времени и мин дельте, изначально заложенная макс. задержка (анимация переходной фазы до ожидания ответа сервера в момент выстрела) итд итп. Кроме того, большую роль играет серверная реализация и настройки протокола tcp/ip (алгоритм Нейгла) а вообще - бинарный Socket лучше)
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 21.06.2010 в 11:07. |
|
|||||
Регистрация: Dec 2008
Адрес: Одесса
Сообщений: 129
|
У меня похожий вопрос.
Сделали чат, клиент начал делать на ас2 (не спешите фукать, есть старый большой рабочий проект на ас2 надо внедрить чат в него), мучился день так и ничего не получилось через xmlsocket заставить заработать. var _serverURL:String = "192.168.1.199"; var _serverPORT:Number = 8883; var _socketXML:XMLSocket; _socketXML = new XMLSocket(); _socketXML.onConnect = onServerConnect; _socketXML.onClose = onServerClose; //_socketXML.onData = onServerData; _socketXML.onXML = onServerData; _socketXML.connect(_serverURL, _serverPORT); На второй день решил на всяк проснифить (wireshark), к моему огорчению данные таки шлются и сервер отвечает все как надо, но флеш ничего не видит, не принимает, не хочет. Начал делать на ас3 xmlsocket, та же фигня... Попробовал через обычный сокет _host = "192.168.1.199"; _port = 8883; _s = new Socket(); _s.addEventListener(Event.CONNECT, onSConnect); _s.addEventListener(ProgressEvent.SOCKET_DATA, onSData); _s.addEventListener(IOErrorEvent.IO_ERROR, onSIOError); _s.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSSecError); _s.addEventListener(Event.CLOSE, onSClose); _s.connect(_host, _port); Объясните пожалуйста есть ли существенная разница, что он не хочет работать через xmlsocket, сервер на руби, может чего упустил важного? Спасибо. ------------- upd Проблема решилась, со стороны сервера нужно было добавить \0 в конце каждого запроса, т.к. иначе флеш не понимает где конец. Последний раз редактировалось Ralph_DiMarko; 16.01.2012 в 20:43. Причина: решилось |
Часовой пояс GMT +4, время: 23:55. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|