- Home
- Tutorials
- Flash
- Intermediate
- Flash Remoting & FlashCom Server

Action Message Format
Copyright © 2004 O'Reilly Media, Inc. All Rights Reserved. | ![]() |
| This content is excerpted from the above-named O'Reilly publication, with permission, by agreement with ActionScript.org. | |
While AMF is a compact format, it is still important to understand the size implications of each datatype. AMF is used both in remoting and when you embed data into a NetStream. It also is the basis for the format of data stored in shared objects. Since data embedded in a stream has the highest priority and is never dropped, it is important to understand how the size of the data can force a client on a slower connection to drop video and even audio frames.
All AMF packets sent with remoting contain five parts:
Packet version header
Header count
Array of header messages
Body message count
Array of body messages
The version, header count, and body count add 6 bytes to the packet. The header and body messages vary by the count and the data contained in each. Each type of object passed over AMF carries its own overhead in bytes. The byte counts in Table 11-1 include a 1-byte flag (indicating the datatype) that precedes the data for each type.
Table 11-1. AMF datatypes and byte count
|
Datatype |
Byte count |
|---|---|
|
null |
1 |
|
undefined |
1 |
|
Boolean |
2 |
|
Number |
9 |
|
Date |
10 |
|
String |
2 + string length |
|
XML |
5 + XML.toString( ).length |
|
Array |
5 + (n for each array index value) |
|
Object |
4 + (2 + string length for each property name) + (n for each property value) |
|
Associative array |
8 + (2 + string length for each property name) + (n for each property value) |
|
Custom class |
6 + class name length + (2 + string length for each property name) + (n for each property value) |
The table is sorted by byte count to help you manage bandwidth usage, but of course the exact bandwidth varies by the contents of complex datatypes, such as arrays.
Tip
As illustrated in Table 11-1, passing the number
1 adds 7 more bytes to the packet than passing the
Boolean true; they are not equivalent! If both the
client and server implementations can handle sending and receiving
Boolean values, using a Boolean instead of a number can save precious
bytes. Of course, multiple Boolean values can be coded as bits in a
single number and decoded using bitwise operators.
It is not usually necessary to pay such granular attention the number of bytes in an AMF packet when dealing with remoting from a FlashCom application, since the connection from server to server is usually very fast. It becomes more important to consider the impact of the data packets when you are embedding data into an audio and video stream or when managing SharedObject data.

