|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|
|||||
Регистрация: Oct 2004
Адрес: Москва
Сообщений: 168
|
Многократное открытие страниц с LocalConnection
Добрый день.
На странице есть две взаимодействующие, посредством LocalConnection, флешки. При открытиии страницы в двух разных окнах эксплорера возникают проблемы с взаимодействием (из за того что имя LocalConnection Object одно и то же). Попыталься избежать проблему использованием функции Math.random с дальнейшим присвоением имени конекшена... но только что-то не пойму синтаксиса... помогите. может подскажите какие-нить другие способы. Спасибо за внимание. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Открывай вспомогательное соединение (с фиксированным id), посылай в него уникальный id и, если отправка не прошла, то слушай это соединение на приём id. Тоже самое делай из другой флешки. В итоге, одна флешка отправить id не может и начинает слушать это соединение. Вторая, отправляет id, открывает основное соединение с этим id. Первая, получив из вспомогательного соединения id, открывает основное с этим id и закрывает вспомогательное.
Например, так реализовано здесь: http://bbk-dvd.ru/demo/ Количество открытых окон браузера не влияет на работоспособность. |
|
|||||
Регистрация: Oct 2004
Адрес: Москва
Сообщений: 168
|
__etc меня правильно понял. сейчас буду писать.
1) ага 2) я думал создавать много локал конекшин обджектов с уникальными id а всё оказалось интереснее... |
|
|||||
однако я все равно не въехал:
чтобы избежать конфликта, нужно чтобы каждая пара флешек(в каждом открытом окне) имела свой id, к чему тогда эти вспомогательные соединения, почему этот id просто не использовать в имени соединения ? зы: сгенерить уникальный id и передать флешкам при загрузке страницы, имхо, не вопрос.. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Цитата:
з.Ы. Под id и подразумевалось имя соединения Последний раз редактировалось etc; 24.07.2006 в 15:01. |
|
|||||
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. |
|
|||||
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
граждане, мне кажется, совсем не нужно усложнять систему.
зачем что-то куда-то отправлять, смотреть, есть ли ответ... мы ведь теперь все флэшки всё равно выводим джаваскриптом. так? :) чтобы несчастные пользователи ИЕ не были вынуждены щелкать мышкой. ну так почему бы флэшкам на странице при помощи джаваскрипта черещ FlashVars не отдавать уникальные айдишники для соединения? это куда проще будет. уникальный айдишник сгенерировать легко. например, так: var id = "lc"+new Date().getTime(); этот id нужно раздать всем флэшка на странице через FlashVars. |
Часовой пояс GMT +4, время: 21:31. |
|
« Предыдущая тема | Следующая тема » |
|
|