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

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

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

Регистрация: Jan 2008
Сообщений: 23
Attention Не срабатывает LocalConnection

Вообщем был написан буфер между сервером и играми на флеше 8 и 9, который передает данные от сервера к игре и обратно.
Общение посредством LocalConnection.
Работает все отлично, но вот беда - если данные очень быстро передаются, то первая часть проходит, а остальные теряются. Весь код писать не буду, но вот пример.
Клиент-буфер:
Код:
AVM_lc = new LocalConnection();
AVM_2c = new LocalConnection();
AVM_2c.allowDomain('*');
AVM_2c.client = this;
AVM_2c.connect("_As2toAs3");
// всякая всячина

private function parser(s:String):void {
		var xml:XML =new XML(s);
		node = xml.name().localName;
		 if (node== "m") {
			 AVM_lc.send("_As3toAs2", "messages", xml);
		}
	}

//==================
Игра
Код:
AVM_1c = new LocalConnection();
AVM_2c = new LocalConnection();
AVM_1c.allowDomain('*');
AVM_1c.client = this;
AVM_1c.connect("_As3toAs2");
// тоже всякая всячина

// Функция получение от клиента сообщение в ксмле
	public function messages(xml:XML):void {
		
		var number_cadr:String; // Номер кадра на карте
		var nodes:XML = new XML();
		nodes = xml.children()[0];
// и так далее
Так вот сервер отправляет очень быстро сообщения по сокету и клиент парсит это и перенаправляет по локал конекшину игре. Сообщения от сервера приходят - проверено. Клиент отправляет по локалконекшн соединению - тоже проверено. Игрка получает - все впорядке. Но если отправить в доли секунды несколько сообщений - то игра принимает только первое - остальные как будто заглушаются первым.
Ставить ограничение по времени на клиенте - нельзя, ибо игры быстрые, мультиплеерные, синхронизируются, как милисекунда на счету.
У какого какие мысли? Может я что то не так сделал или это особенность LocalConnection?

Старый 26.01.2008, 04:40
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Особенность.

Старый 26.01.2008, 05:48
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 3  
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
В качестве обходного механизма попробуйте создать несколько экземпляров LocalConnection и слать по очереди в разные экземпляры, т к подобная проблема возникает из-за перегруженности конкретного соединения.
__________________
4am is time to rock

Старый 26.01.2008, 13:13
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 4  
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
чем больше конекшинов создать тем тем медленние они буду работать все коннекшины работаю в одном потоке, поэтому все их сообщения выстраиваются в очередь. приблизительно передача одного сообщения занимает один кадр.

Старый 26.01.2008, 13:31
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 5  
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Да, но при этом если мы передаем за кадр 4 сообщения по 4 соединениям - они дойдут. А вот если пихаем все в один LocalConnection - то сообщения могут теряться. Т е получаем либо более синхронные сообщения, но с риском потери, либо менее - но значительно меньше рискуя.
__________________
4am is time to rock

Старый 26.01.2008, 16:57
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
да пофигу на количество конекшинов обработка в одном потоке идёт. может потеряем мы конечно меньше, но вот толку от этого никакого при толстом потоке нам уже нужно будет думать не о милисикундах, а как бы это на десятых обработать

Старый 26.01.2008, 19:25
Ajshma вне форума Посмотреть профиль Отправить личное сообщение для Ajshma Найти все сообщения от Ajshma
  № 7  
Ajshma

Регистрация: Jan 2008
Сообщений: 23
Всем спасибо. Скорее всего прийдется лавировать между несколькими потоками и создавать временной стек. И еще прийдется подтвеждать прием сообщений.
А все из за того, что из девятки нельзя напрямую обратиться в восьмерку...
Еще раз спасибо

Старый 26.01.2008, 19:41
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
всё из-за того что такого быть не должно

Старый 28.01.2008, 09:31
Ajshma вне форума Посмотреть профиль Отправить личное сообщение для Ajshma Найти все сообщения от Ajshma
  № 9  
Ajshma

Регистрация: Jan 2008
Сообщений: 23
2BloodDHounD
В смысле? Сокет охрененно быстрая штука, и если у нас на тесте в локале такое происходит, то нельзя исключать возможность и из глобала... Проверяли соединение через мобилу - сообщения терялись. Проблемма решилась временным стеком - все сообщения заносятся в массив, из которого по Timer выдираются в порядке стека сообщения и отправляются на игру.

Старый 28.01.2008, 12:20
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 10  
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
пыпэц. а напрямую нельзя отправить "на игру"? открыть сокет в самой игре?

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 00:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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