Не получает события удаления onSync для нескольких объектов SharedObject в одном SWF - PullRequest
13 голосов
/ 27 февраля 2011

У меня есть приложение, которое использует Remote SharedObjects, и я вижу странное поведение. Я пишу приложение ActionScript в AS3 с использованием Flash Builder и подключаюсь к Wowza Media Server 2.

Мое приложение работает нормально, но сейчас я пытаюсь написать для него модульные тесты, используя FlexUnit. Мои модульные тесты включают создание нескольких подключений к одному удаленному SharedObject и проверку правильности получения обновлений. Кажется, все работает хорошо, за исключением того, что я не получаю никаких событий SyncEvent.SYNC с info.code «delete». Когда я запускаю свои приложения независимо в отдельных вкладках или даже в отдельных SWF-файлах, встроенных в одну и ту же страницу, все работает нормально. По некоторым причинам, хотя это не работает, когда внутри модульного теста. Я также обнаружил, что если я загружаю SWF-файлы с помощью Loader внутри того же SWF-файла, то получаю то же самое поведение. Мне кажется странным то, как мультипликаторы одного и того же SharedObject ведут себя в одном SWF-файле. Мне пришлось обходить другие странные ситуации в модульных тестах, такие как oldValues, которые не были правильно установлены в событиях onSync.

У кого-нибудь есть идеи, как я могу обойти это? Это известная проблема? Я сумасшедший? :)

Буду признателен за любую помощь!

Ответы [ 3 ]

0 голосов
/ 06 июня 2013

Чтобы получить экземпляр sharedObject, вы используете статический метод SharedObject.getRemote(). Я считаю, что этот метод всегда будет возвращать один и тот же экземпляр для данного имени (и если параметр постоянства имеет одинаковое значение).

У вас могут возникнуть проблемы такого же типа, когда вы удаляете SharedObject из своего приложения (mySO = null) и вы восстанавливаете его еще до того, как сборщик мусора выполнит свою работу).

Такое поведение имеет смысл для меня, но иногда это может быть проблемой, которую я должен признать. В любом случае, это должно быть легко проверить в сеансе отладки (взгляните на номер экземпляра вашего объекта).

Теперь поговорим о модульных тестах, что вы тестируете? Поведение SharedObjects? Если так, то я считаю, что здесь есть какое-то заблуждение. Если вы действительно хотите протестировать такого рода поведение (и мне было бы интересно узнать причину этого), то, я думаю, вам понадобятся более сложные тесты, которые запускают два отдельных приложения.

Надеюсь, это поможет!

0 голосов
/ 10 июня 2014

У нас было похожее поведение с удалениями в нашем проекте. Когда мы вызываем so.close (). Затем удалите ключ в общем объекте. Затем снова подключите SO - он все еще видит удаленный ключ живым.

Обходные пути: не закрывайте SO и не обновляйте удаленные ключи значениями некоторых констант (например, -2), чтобы пометить их как удаленные.

Использовалась Wowza 3.

0 голосов
/ 19 октября 2011

Я также сталкивался с этой проблемой раньше, когда работал над некоторым приложением Flex с использованием некоторых сред программирования, таких как Cairngorm, и подключался к AMFPHP с помощью нескольких удаленных объектов.

В то время я решил решить эту проблему, чтобы убедиться, что эти удаленные объекты не будут запущены одновременно. Это попытка создать так называемую «последовательную цепочку» для запуска этих удаленных объектов один за другим.

Для достижения этой цели может быть трудно, если вы делаете это с нуля, вы можете рассмотреть возможность использования этих современных ActionScript Framework 2.0, чтобы помочь вам (например, SWIZ или Robotlegs). Это может быть слишком сложно, чтобы справиться с самого начала. Я предлагаю вам просто разместить части удаленного объекта, которые будут обрабатываться платформой, не затрагивая при этом другие вещи.

...