Иногда localConnection во флеш-плеере случайно выходит из строя? - PullRequest
2 голосов
/ 31 июля 2009

У меня есть два флэш-фильма, которые общаются друг с другом с помощью localConnection , передавая объект из swfA в swfB. Кажется, это работает нормально, но иногда терпит неудачу. Единственная информация, которая у нас есть, это то, что событие состояния запускается с уровнем error, другой информации нет. После сбоя соединения оно продолжится.

Я не знаю, почему это происходит, но это не проблема безопасности (оба фильма работают в одном домене), и все общение заключено в try..catch.

Кто-нибудь когда-либо видел это, или кто-нибудь может предложить альтернативный способ общения между фильмами? Я пытался использовать ExternalInterface, но это слишком медленно для количества отправляемых обновлений.

Ответы [ 3 ]

1 голос
/ 11 августа 2009

Кажется, мы решили проблему, но не совсем уверены, почему (возможно, мы просто значительно сократили количество сбоев). Мы реализовали следующее:

  • Уменьшено количество локальных подключений путем перемещения всего на externalInterface, где скорость не была проблемой
  • Сгенерировал глобально уникальный идентификатор для каждого фильма, добавляя отметку времени каждый раз при обновлении страницы (вместо повторного использования одного и того же идентификатора). Похоже, что это значительно уменьшило вероятность отказов (хотя они все-таки произошли)
  • Добавлено '_' к идентификатору LocalConnection (см. Документацию, почему). Не уверен, что это помогло, но кажется хорошей практикой.
  • Принудительно восстанавливать соединение каждый раз, когда происходит сбой. Опять же, это хорошая вещь для реализации, чтобы улучшить надежность, но так как теперь не происходит сбоев, это не несет ответственности за непосредственное исправление ошибки.

Так что нет окончательного решения, просто кажется, что вместе они решили проблему.

0 голосов
/ 31 января 2012

У меня просто была такая же проблема. Мое решение состоит в том, чтобы установить таймер, который пытается восстановить соединение с соединением, пока оно не было найдено. Очень простой таймер с функцией, которая устанавливает e.target.stop() в случае успешного подключения.

0 голосов
/ 31 июля 2009

LocalConnection безумно. Он проходит через ваш компьютер и общается с клипами по всему миру. Это означает, что они даже не должны быть на одной странице. Например, если у вас запущено эфирное приложение, вы можете связаться с браузерным приложением.

Просто помните, что идентификаторы являются глобальными, и они будут давать ошибки, если они конфликтуют. У меня было такое, когда я дважды открывал один и тот же swf (потому что он слушает с одинаковым идентификатором) Это происходит, даже если они находятся на отдельных страницах.

Еще один вариант - сделать так, чтобы ваши swfs опрашивали сервер и общались через базу данных. Не уверен, поможет ли это вообще. Я стараюсь избегать LocalConnection, когда я могу:)

...