5

Adobe 的AMF 格式文档似乎并未真正指定整个 AMF 消息的结构。它仅指定单个数据类型的格式。我已经读了五遍这该死的东西,要么我完全错过了实际的 AMF 消息应该包含的内容,要么它不存在。有谁知道实际的整个消息结构的任何文档?

4

3 回答 3

9

该规范可能被描述为“简洁”。

AMF 编码使用称为“类型标记”的字节。整数的类型标记是值 4。整数数据紧跟此标记,长度为 1-4 个字节。长度会有所不同,因为整数类型是“压缩的”,因此值 0-127 只需要 1 个字节,而较大的值需要更多字节。这种整数格式被规范称为“U29”。

例如,如果我们简单地传递整数“5”,则有效的 AMF 数据包将是这两个字节:
04 05

在 Web 上的应用程序中,AMF 数据有时前面有一个长度,该长度以网络字节顺序编码为无符号长整数。如果您正在观察这样的应用程序,您可能会看到:
00 00 00 02 04 05,其中00 00 00 02表示以下 AMF 数据长度为 2 个字节。

现在,假设我们在它具有以下构造函数之后发送了一个对象:

   this.ui = "button_press";
   this.param = 5;

然后我们可能会在 AMF 数据中看到以下内容:

0A- 对象标签
2B- u29o-val:2 个密封成员,具有特征和数据的对象,可能是动态成员
01- 空字符串 - 匿名对象
05- 字符串值,字符串长度:2
75 69- 'ui'
0B- 字符串值,字符串长度:5
70 61 72 61 6D- 'param'
19- 字符串值,字符串长度:12
62 75 74 74 6F 6E 5F 70 72 65 73 73- 'button_press'
04- 整数
05- 整数值:5
01- 空名称,终止此对象的动态成员的空列表

00 00 00 1C由于该数据包将占用 28 个字节,因此当在野外遇到时,它可能会以:为前缀。

另一种需要考虑的可能性是 AMF 通信可能会被压缩,通常使用 zlib 中可用的“deflate”压缩。

我希望这可以帮助您理清规范,但是如果您有问题,我会尝试回答。

于 2009-10-12T22:35:45.430 回答
1

If you are looking for remoting message structure it is appended to the end of the AMF0 spec - Section 4

于 2009-11-04T10:43:25.017 回答
0

你也可以通过 wiki http://en.wikipedia.org/wiki/Action_Message_Format 它有足够的信息需要。

谢谢,拉杰什。

于 2013-08-08T13:11:45.920 回答