|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Цитата:
1. Есть две флешки -- А и Б. Флешка А имеет прямое соединение А>Б, а флешка -- Б>А, для перессылки данных в обе стороны. Плюс каждая из флешек имеет вспомогательное соединение, через который отправляется id. Имя вспомогательного соединения фиксировано. 2. При запуске флешки А или Б происходит попытка отправки (вызов некоего метода, допустим ping) в вспомогательное соединение сгенерённого id (в данном случае "lc_"+(new Date().getTime())), предполагая, что данное вспомогательное соединение открыто другой флешкой. 3. На onStatus смотрим, была-ли отправка удачной или нет. Если нет, то открываем вспомогательное соединение и ждём аналогичных действий из пункта 2 от второй флешки. Если же посылка удачна, то открываем основное соединение (заданного типа, обратное или прямое, в флешке А -- прямое, во флешке Б обратное, с именем lc_XXXXXXXXX или lc_XXXXXXXXX_rv соответственно). Вторая же флешка, получив id (произошёл вызов метода ping) от первой, открывает своё основное соединение заданного типа (прямое или обратное) и закрывает окрытое ею вспомогательное соединение (оно уже не нужно на этот момент). Собственно, соединение установлено. Надеюсь, так яснее. Что касается записи имени соединения через JS, то мне нужно было обойтись без скриптов и иметь возможность запускать флешки в двух отдельных окнах Flash-плеера. JS, конечно, будет проще, но описанный мною метод можно реализовать в одном классе, который будет использоваться в обеих флешках. Последний раз редактировалось etc; 24.07.2006 в 21:27. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Вариант без двусторонней связи:
1. Делаем попытку отправки id в вспомогательное соединение 2.1 При неудачной попытке, открываем вспомогательное соединение и ждём id от второй флешки. Если данная флешка является вещателем, то при получении id сохраняем этот id для вещания в основное соединение. Если же флешка не является вещателем, то при получении id, открываем соединение с этим id. После получения закрываем вспомогательное соединение. 2.2 При удачной попытке отправки, если данная флешка является вещателем, то сохраняем этот id для вещания в основное соединение. Если же флешка не является вещателем, то при получении id, открываем соединение с этим id. Как видите, это всё можно реализовать в одном и том же классе, который будет использоваться в обеих флешках с флагом вещателя или нет. Беспокоится по поводу того, что может произойти сбой в момент ожидания одной из флешек id-шника от другой не стоит, хотя бы потому что два окна браузера одновременно открыть нельзя. Последний раз редактировалось etc; 24.07.2006 в 21:43. |
|
|||||
если исходить из предположения что "два окна браузера одновременно открыть нельзя", все может быть проще:
в обоих флешках : var n=0; var lc=new LocalConnection(); while(!lc.connect("lc"+n))n++; lcName="lc"+(n-n%2);//его и открываем для связи зы: только если окна нельзя открыть одновременно, то загрзузиться флешки могут ведь как попало (легкие из обоих окон обгонят тяжелые, например): получим бардак.. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Осталось посчитать процент тех, кто будет открывать более одного окна
|
|
|||||
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
в вопросе автор выразился вполне ясно:
"На странице есть две взаимодействующие, посредством LocalConnection, флешки." в этом свете делать какие-то классы ради решения этой задачи нецелесообразно. мы ведь ВСЁ РАВНО вводим флэшки джаваскриптом. причем, возможно, пользуемся SWFObject. дописать туда раздачу уникальных айдишников - это по одной строчке кода для каждой флэшки. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Нокс, ну мы же предложили два варианта решения. Один самый простой и рациональный, второй посложнее, но позволяет обойтись без JS.
Вот и всё. Понятно, что скриптом проще, с этим никто не спорит. |
|
|||||
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
|
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Цитата:
|
Часовой пояс GMT +4, время: 21:22. |
|
« Предыдущая тема | Следующая тема » |
|
|