EasyDarwin配置有HTTP后台管理,在EasyDarwin的配置文件easydarwin.xml定义有后端管理的端口8080。
即通过HTTP访问8080端口可以进行后台管理,后台管理主要有三种:
- 获取HLS模块信息(通过http://ip:8080/api/easyhlsmodule)
- 获取HLS会话信息(通过http://ip:8080/api/gethlssessions)
- 获取RTSP推流会话信息(通过http://ip:8080/api/getrtsppushsessions)
获取的信息都以json的形式显示在页面。
首先也是TCP监听到事件,进行处理,建立对应的会话。
后台管理基于HTTP,调用的是HTTPListenerSocket::GetSessionTask(...)。
返回新建HTTPSession并加入线程执行,进入HTTPSession::Run()方法。
在HTTPSession:Run()状态机执行过程中,进行读取,设置,处理请求等操作。
在case kFilteringRequest:中调用SetupRequest()对请求报文进行解析。
在SetupRequest()中分析是请求何种内容,即前面的三种情况。
- 获取HLS模块调用ExecNetMsgEasyHLSModuleReq(...)函数。
- 获取HLS会话调用ExecNetMsgGetHlsSessionsReq(...)函数。
- 获取RTSP推流会话调用ExecNetMsgGetRTSPPushSessionsReq(...)函数。
在此主要分析下最常用的获取RTSP推流会话的流程。
在ExecNetMsgGetRTSPPushSessionsReq(...)函数中调用了Easy_GetRTSPPushSessions()函数。
Easy_GetRTSPPushSessions()调用的是回调类中同名函数Easy_GetRTSPPushSessions()。
在此函数中遍历获取所有转发流会话theSession,为每一个新建一个EasyDarwinRTSPSession session,并且使用theSession相关信息初始化session信息。
可以发现,session主要包含3条信息,会话的URL和会话名,以及会话输出数。
其中URL是通过转发流会话的推流会话获取的,获取方法就是GetValueAsString(...)传入的key值是qtssCliSesFullURL,为何可以用这个key值获取到URL的字符串,这是因为在推流的时候便以这个key值存入的URL。
会话的名即是转发流会话名,会话输出数也是转发流会话的输出数。
贴一个后台访问RTSP推流会话信息的图片。