服务器监听1935接口:
1.client-----发送1537个bytes数据---->server
握手第一步
tcpcarrier.cpp中的OnEvent接受到,转到tcpprotocol.cpp中的SignalInputData,在return BaseRTMPProtocol::SignalInputData(IOBuffer &buffer),最终数据在这里处理
这1537bytes数据主要是握手数据,所以在InboundRTMPProtocol中的PerformHandshake(buffer)函数处理,
首先获取消息头handshakeType(为0x03,表示未使用ssl加密的),进入PerformHandshake(buffer, false)在进行下一步的处理
a.首先验证版本和方案
bool InboundRTMPProtocol::ValidateClient(IOBuffer &inputBuffer) {
if (_currentFPVersion == 0) {
WARN("This version of player doesn't support validation");
return true;
}
这里就是传说中的单独处理最末尾32bytes的
if (ValidateClientScheme(inputBuffer, 0)) {
_validationScheme = 0;
return true;
}
if (ValidateClientScheme(inputBuffer, 1)) {
_validationScheme = 1;
return true;
}
FATAL("Unable to validate client");
return false;
}
a.填充随机数1537bytes,一共凑足3072bytes+1bytes(0x03)头
b.发送给客户端