AMF3 仕様では、いわゆる「参照テーブル」の使用が定義されています (この仕様のセクション 2.2 を参照)。
Erlang で開発した AMF3 エンコーダー/デコーダーでこの動作を実装しましたが、Flash API の経験があまりないため、オブジェクトを AMF3 にシリアル化するときにこれらの参照テーブルを使用するように Flash に強制する方法を簡単に見つけることができません。たとえば、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>>
(これは明らかに繰り返しです)。
ただし、これら 2 つの文字列が 1 つの 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 アプリケーションとサーバーの間に非標準のプロトコルがある場合)
ありがとうございました!