首先,对于协议而言,有标准的,也有私有的,就看具体使用场景的修饰与更改情况了。部分朋友在接触SDK的时候会提出此疑问,只能说“各怀鬼胎”。第一,即便我们告知我们使用的协议,该用sdk的时候,还是用sdk,sdk接口层面上并不包含协议的影子,这也是sdk去繁化简的一个重要特点;第二,当回复其用A协议时,会被反问怎么不用B协议,这下这能“呵呵”了,无可奉告,兄弟,更深层次的我们回头再探讨! 就老老实实的调接口吧。第三,本着学习和业务扩展的需要了解使用到的协议,这也要“回头探讨”。
开发者在使用根本不用关心这个“协议”,为什么呢?
因为sdk的原则就是把复杂的封装,变成简单的调用。举个聊天消息例子:系统内xml规则
<msg type="chat">
hello
<richText>hello</richText>
</msg>
原始内部接口可能是这样的 sendXmlData(String xml) ------------------------(1) xml 为上面这段xml数据
对外初级接口sendChatData(String text,String richText) -----------------------(2)text 为hello,richText为hello
对外高级接口sendChatData(String content) ---------------------------------------(3)content 为hello
对比之下封装越简单,对“协议”距离越远。用(3) 仅需要传入 “hello” 即可发送,用(1) 就需要了解xml的组成和xml的构造以及解析,把“hello” 变成
<msg type="chat">
hello
<richText>hello</richText>
</msg>
发送出去。
随着各种开源项目和“手到擒来”的工具的多样和丰富,造就了能力上的两级分化,厉害的很厉害,平庸的依旧平庸,你属于哪一类。
Gensee 移动sdk用到的内容协议具体再说,标准协议:
RtSdk:RTP HTTP
PlayerSdk :RTMP,HTTP,HLS
VodSdk:HTTP,HLS