1.0.4 • Published 8 years ago
amf-js v1.0.4
AMF.JS
This project uses the modern Javascript Typed Array specification (e.g, ArrayBuffer, U8intArray, DataView, etc.).
Designed for browsers or Node.JS.
Errata
Inspiration
Everything you need to know about the data structure:
Understanding ABNF frequently referenced throughout the spec:
Reverse-engineering via ActionScript 3:
AS3 Object serialization:
import com.hurlant.util.Hex;
import flash.utils.ByteArray;
// ...
public function serialize():void {
  var o:Object = new Object();
  o.name = "John Doe";
  var byteArray:ByteArray = new ByteArray();
  byteArray.writeObject(o);
  trace("serialized: "+ Hex.fromArray(byteArray));
}AS3 Object deserialization:
import com.hurlant.util.Hex;
import flash.utils.ByteArray;
// ...
public function dumpObj(oObj:Object, sPrefix:String = ""):void {
  sPrefix == "" ? sPrefix = "---" : sPrefix += "---";
  for (var i:* in oObj) {
    trace(sPrefix, i + " : " + oObj[i], "  ");
    if (typeof(oObj[i]) == "object") dumpObj(oObj[i], sPrefix);
  }
}
public function deserialize():void {
  var byteArray:ByteArray = new ByteArrray();
  // ... fill with bytes ...
  var o:Object = byteArray.readObject();
  trace("deserialized: "+ this.name +" hex= "+ Hex.fromArray(ba));
  dumpObj(o);
}