Спецификация AMF3 определяет использование так называемых «справочных таблиц» (см. Раздел 2.2 настоящей спецификации).
Я реализовал это поведение в своем кодере / декодере AMF3, который я разработал в Erlang, но, не имея большого опыта работы с Flash API, я с трудом могу найти, как легко заставить Flash использовать эти справочные таблицы при сериализации объектов в AMF3; например, если я использую ByteArray, кажется, что он просто повторяет полную кодировку объекта
var ba:ByteArray = new ByteArray();
ba.writeObject("some string1");
ba.writeObject("some string1");
# =>
# <<6,25,115,111,109,101,32,115,116,114,105,110,103,49,
# 6,25,115,111,109,101,32,115,116,114,105,110,103,49>>
(что явно является повторением).
Однако, если эти две строки находятся в одном вызове writeObject, он, похоже, использует ссылки:
ba.writeObject(["some string1", "some string1"]);
# => <<9,5,1,6,25,115,111,109,101,32,115,116,114,105,110,103,49,6,0>>
Сокет, кажется, ведет себя так же.
Итак, можно ли использовать справочные таблицы во Flash-коде? (при условии, что может иметь нестандартный протокол между приложением Flash и сервером)
Спасибо!