Локальная связь между задержкой отправки swf-файлов и инструментом LocalConnection sniffer

#flash #apache-flex #communication #packet-sniffers #localconnection

#flash #apache-flex #Информационные материалы #анализаторы пакетов #локальная связь

Вопрос:

Я сталкиваюсь со странной проблемой при обмене данными LocalConnections между двумя swf-файлами.

Первое (приложение FLEX) отправляет сообщение по выделенному локальному соединению второму (приложению Flash). Затем Flash отвечает, отправляя сообщение по другому выделенному LocalConnection. Это сообщение не принимается FLEX напрямую, и задержка составляет не менее 30 секунд, вплоть до 1-2 минут! Кажется, проблема возникает только с Flash Player > = 10 и никогда не возникает с Chrome.

Я не нашел ничего в Интернете, касающегося подобной проблемы, ни чего-либо в примечаниях к выпуску Flash Player. У кого-нибудь уже была такая проблема?

Кстати, есть ли какой-либо инструмент, который можно использовать для отслеживания сообщений LocalConnection? Это может помочь мне лучше понять проблему.

Спасибо!


Дополнительная информация:

  • swf-файлы расположены в разных фреймах
  • swf-файлы встроены в swfobject
  • Я пытался отложить отправку Flash, я пытался создать другое LocalConnection, предназначенное для этого вызова, но у меня всегда был один и тот же результат: для всех вызовов метод FLEX вызывается с одинаковой задержкой.
  • Я также установил таймер в FLEX для периодического входа в систему, чтобы проверить, нет ли фонового процесса, задерживающего обработку метода, но все кажется прекрасным

Комментарии:

1. Я знаю, это звучит глупо, но может ли что-то вроде вашего брандмауэра вызывать проблему? У меня есть Comodo Internet Security, и у меня были проблемы с ним, как правило, когда он пытается проанализировать слишком много сетевых данных одновременно. Возможно, попробуйте полностью отключить его, чтобы исключить это.

2. Спасибо за предложение, но поведение происходит во многих разных средах, оно с высокой степенью воспроизводимости. Сумасшедшая вещь в том, что сообщения действительно тонкие (логическое значение и uint), а первое отправляется и принимается за несколько миллисекунд!

3. Вы тестируете это в нескольких браузерах одновременно? Это может вызвать некоторую путаницу с flash Player. Вы сказали «это никогда не происходит с Chrome»… означает ли это, что задержки нет или ответа вообще нет? Chrome, я полагаю, использует собственный flash Player… даже если у вас установлена отладочная версия. В итоге я пришел к использованию javascript и ExternalInterface для передачи данных между двумя SWF-файлами… просто говорю 🙂

4. Результаты одного и того же тестирования в нескольких браузерах одновременно на одном компьютере или на разных машинах. В Chrome задержки вообще нет, все работает нормально, даже при отключении собственного flash Player. Спасибо за предложение относительно javascript и ExternalInterface, совместное использование SharedObjects также может быть решением. Сделаю это, если смогу понять основную причину проблемы…

5. какой метод встраивания вы используете?

Ответ №1:

Я не думаю, что проблема связана с несколькими браузерами и т.д. Я использовал LocalConnection между flash flex и никогда не испытывал никаких задержек. Вы пробовали использовать SWF-файлы сами по себе? Они все еще должны иметь возможность обмениваться данными. LocalConnection не требует браузера.

С помощью LocalConnection вы также можете определить, когда установлено соединение, а также есть ли ошибка отправки. При автономном запуске swfs вы могли бы отслеживать любые ошибки. Кроме того, вы можете попробовать использовать MonsterDebugger для диагностики проблем с SWF-файлами в вашем браузере. MonsterDebugger также использует LocalConnection, поэтому, если это работает, вы можете быть уверены, что это что-то в вашем коде, а не LocalConnection.

Комментарии:

1. Контекст немного особенный, поскольку мне приходится иметь дело с некоторыми существующими источниками, и я не могу использовать автономный swf, поскольку модуль слишком тесно связан с контекстом браузера. Проблема в том, что модули всегда хорошо взаимодействуют обоими способами, за исключением этого случая. Я попробовал MonsterDebugger (спасибо за предложение, я не знал этого инструмента, он кажется действительно полезным), но без какого-либо результата (я заглядываю в исходный код, и, похоже, он использует не LocalConnection, а socket communication). У меня были сжатые сроки выполнения этого проекта, поэтому мы решили использовать другой способ связи: с SharedObjects…