Skip to content

Latest commit

 

History

History
66 lines (47 loc) · 1.79 KB

README.md

File metadata and controls

66 lines (47 loc) · 1.79 KB

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 [A]BNF 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);
}