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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.06.2007, 18:59
MyXus вне форума Посмотреть профиль Отправить личное сообщение для MyXus Посетить домашнюю страницу MyXus Найти все сообщения от MyXus
  № 11  
Ответить с цитированием
MyXus
 
Аватар для MyXus

Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
может и правда, неск объектов одновременно пишут. Если так, то можно решить с помощью локал конекшна, хоть ето и чревато.
Чтобы не было чревато, я делал такую штуку: каждая флашка через flashVars получает айдишник в определенном диапазоне (например от 1 до 20) и айди браузера, с которого зашел юзер; и криейтит локал конекшн с именем name+id+browser. Потом опрашивает 19 остальных адресов (name+i+browser) на предмет присутствия держателя конекшна с сервером и с SO. Если держатель не отзывается - креейтит конекшн сама. Если отзывается - отбирает у него данные. Как-то так.

Зачем? Если создать несколько LC с одинаковым именем, обычно всё умирает. Хотя плотно не тестировал.
__________________
#define true false //счастливой отладки, друзья

Старый 22.06.2007, 19:16
MyXus вне форума Посмотреть профиль Отправить личное сообщение для MyXus Посетить домашнюю страницу MyXus Найти все сообщения от MyXus
  № 12  
Ответить с цитированием
MyXus
 
Аватар для MyXus

Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
Сам седня/вчера реализовывал эту схему. Есть подводный камушек: LC-клиенты отзываются на LC.send далеко не мгновенно. Поэтому интервал, по истечении которого считается, что держатель коннекшна с данными умер должен быть довольно значительным. Типа секунды. И делать первую проверку на предмет существования держателя конекшна следует в разных флешках с разными интервалами, иначе они все дернуться в один момент и будуть выхватывать конекшн друг у друга.
Примерно схема выглядит так: при старте приложения аппликуха ждет 100ms*id, где id - уникальный идентификатор флешки, полученный из flashVars. И только потом начинает шевеления. До конца схема не обкатана, но я тестировал на 10 копиях - багов не заметил.

А. Да. Нашел мегакосяк. Даже два. Во-первых, каждый LC.send занимает примерно 30-40ms. Таким образом, проверка 30 LC-клиентов занимает не менее секунды. Что есть, зачастую, недопустимое ограничение. Ну и самый главный мегакосяк - поскольку мы всегда проверяем айдишники от 0 до 30 (условно), когда юзер закроет одну из страниц, необходимо сообщить серверу о том, что айдишник освобожден. Для этого (на данном этапе) планируется юзать js-event onBeforeUnload. Но это прокатит только для тех, у кого установлен js. Правда если вы выводите флешки js-ом, это вас не напугает -)
__________________
#define true false //счастливой отладки, друзья


Последний раз редактировалось iNils; 22.06.2007 в 22:39.
Старый 09.07.2007, 13:01
ak_esense вне форума Посмотреть профиль Отправить личное сообщение для ak_esense Посетить домашнюю страницу ak_esense Найти все сообщения от ak_esense
  № 13  
Ответить с цитированием
ak_esense

Регистрация: Nov 2006
Сообщений: 7
Отправить сообщение для ak_esense с помощью ICQ
Всем большое спасибо

Старый 24.07.2007, 14:20
MyXus вне форума Посмотреть профиль Отправить личное сообщение для MyXus Посетить домашнюю страницу MyXus Найти все сообщения от MyXus
  № 14  
Ответить с цитированием
MyXus
 
Аватар для MyXus

Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
Тут недавно решили эту проблему. Поскольку проблема популярная, решил отписаться.
Решение: Дефайним имя мастер-локал-конекшна (держателя коннекшна с сервером) и при создании инстанса класса делаем LC.connect(master_name). Если получаем тру - значит теперь мы - мастер. Если фолс - значит криейтим slave с рандомным именем. После чего выполняем ключевую фичу - slave.send(master_name, 'register_on_master', my_slave_name). И включаем этого слейва в список слушателей на мастере. После чего остается только периодически чекать мастера тем же способом, а на мастере - отрубать умерших клиентов, которые вовремя не отметились. Аккуратно и незатратно.
Всем привет -)
__________________
#define true false //счастливой отладки, друзья

Старый 24.07.2007, 14:23
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 15  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Привет, спасибо)
__________________
Free-lance | Twitter | Me

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

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

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


 


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


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