手撕Rtmp协议细节(5)——result消息

 

​rtmp客户端发送connect消息之后,rtmp server会给客户端发送_result消息,通过该消息通知客户端连接状态(success/fail)。这一篇我们就详细来讲讲_result消息。

 

1.概览

 

老规矩,我们先来看一个_result消息的抓包。

可以看到,一个_result消息由4部分组成,类型标识,transaction ID,properties,response related information,这四部分均以AMF格式进行编码,我们一一来看:

 

2.详解

  • 类型标识

典型的类型+长度+值的AMF组合,不多说了,_result表示消息类型。

  • transaction ID

transcationID,按照AMF0格式编码,0x00表示数字格式,其后用8个字节表示ID,对于connect消息的回复,此ID恒为1。

  • properties

可以看出properties中包含了两个Object类型的数据,一个fmsVer表示了FMS 服务器的版本信息(此处为FMS/3,0,1,123),另外一个capabilites表示容量,值为31。关于RTMP Body中的Object对象数据组织格式,就不赘述了,可以参照之前对于connect消息的详细解释。

  • response related information

通过看抓包文件,我们可以看出这里包含许多关于connect连接的响应,以object类型进行组织。有level,此处为status,意味表示连接的状态;code,表示代码,可以理解为某种编号,此处为NetConnection.Connect.Succes;description可以理解为对code的描述,此处为‘Connection succeeded’。code与description联合起来,表示此次连接成功;还有关于objectEncoding字段,表示object以那种方式编码(AMF0或者AMF3),此处值为0,表示采用AMF0编码。

客户端收到_result,获取连接状态为Connection succeeded。这样关于连接的建立基本就完成了,接下来就可以进行流相关的操作了。下期我们再见。

 

精彩推荐

手撕rtmp协议细节1-rtmp握手

手撕rtmp协议细节2-rtmp Header

手撕rtmp协议细节3-rtmp Body

手撕rtmp协议细节4-rtmp Connect

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值