Srs之HttpApi内部调用流程

先从简单的http协议开始研究,探究srs的内部工作原理。

下面开始阅读代码:

第一步:创建tcp的监听:

Srs之HttpApi内部调用流程

第二步:创建http协议的监听:

 Srs之HttpApi内部调用流程

 第三步:SrsBufferListener里面开始监听

Srs之HttpApi内部调用流程

第四步 :启动协程库的,调用start之后,就开了个while循环,开始等待tcp连接了

Srs之HttpApi内部调用流程

第五步:在cycle函数里面等待tcp连接

Srs之HttpApi内部调用流程

第六步:处理tcp连接

Srs之HttpApi内部调用流程

第七步:转到了下面的处理函数,又开启了一个协程,这个应该是读取数据用的

Srs之HttpApi内部调用流程

第八步 :读取数据,由于是http协议,所以会到这个类里面来

Srs之HttpApi内部调用流程

第九步 :处理请求

Srs之HttpApi内部调用流程

第十步 :应答 出去

Srs之HttpApi内部调用流程

 

*****************************************看完流程的总结******************************

整个http通信的流程分为两大步:

第一步:创建监听----》创建一个循环等待监听上来

第二个:处理建立连接的消息---》创建一个循环读取数据

循环的创建都是使用了SrsSTCoroutine来实现

监听的循环这么实现的:

Srs之HttpApi内部调用流程

再看 消息的循环,这里有点难搞

SrsHttpApi 继承了SrsConnection类,实际可以看SrsConnection

Srs之HttpApi内部调用流程

 

 Srs之HttpApi内部调用流程

 这里循环,都用到了同一个类,然后处理还是在do_cycle里面处理

Srs之HttpApi内部调用流程

Srs之HttpApi内部调用流程