WebRTC中peerconnectclient&server 簡析

/////////////////////////////////////////////////////////////////
// A. 第一臺client連接服務器
1. MainWnd::OnDefaultAction裏面接收用戶單擊“connect"的事件
2. 委託給回調Conductor::StartLogin執行連接操作
3. Conductor::StartLogin裏再命令PeerConnectionClient::Connect執行連接操作
在該函數裏,若服務器地址未解析,需要先解析,然後纔開始連接
4(optional). 當需要解析時,若PeerConnectionClient::OnResolveResult解析成功,才繼續執行 
5. 當解析成功,調用PeerConnectionClient::DoConnect執行連接操作, 該函數對socket做一些相關的初始化工作
6. 當相關的初始化工作完成後,調用PeerConnectionClient::ConnectControlSocket來向server發送連接命令
7. 若連接成功,則回調PeerConnectionClient::OnConnect被調用, 這裏發送/sign_in數據包
8. // A1 -- 服務器執行相關的處理工作
9. peer在PeerConnectionClient::OnRead裏接收到其他peer的數據包,並確定自己登錄成功,並使用hanging_get_開始連接server
10. 連接成功後,在PeerConnectionClient::OnHangingGetConnect裏面向服務器發送/wait請求
11. // A2 -- server接收到新登錄的peer的/wait請求時,不做任何處理


/////////////////////////////////////////////////////////////////////
// A1. 服務器處理client的/sgin_in請求
1. main的while循環監聽套接字被觸發,調用accept獲取和該peer通信的socket,
並將該socket加入到socket數組中,然後發送其他peer的信息給新連接的peer


/////////////////////////////////////////////////////////////////////
// A2. 服務器處理client的/wait請求
1. 當server在main的while裏面接收到client的/wait請求時,它不做任何處理
2. while循環接收到該peer的"/sign_in?hwh@Mountain-hooray"請求。


/////////////////////////////////////////////////////////////////
// B. 非第一臺client連接服務器
1. 這個過程和第一臺client連接服務器的情況類似


/////////////////////////////////////////////////////////////////
// C. 當peer A請求與peer B通話時
// peer A部分
1. 用戶在MainWnd::OnDefaultAction裏觸發通話命令
2. 其在回調Conductor::ConnectToPeer裏執行相關連接工作
該回調會調用InitializePeerConnection執行一些初始化工作並用CreateOffer創建發送端,設置Conductor爲回調類
3. 當Conductor創建Offer成功後, 回調Conductor::OnSuccess被調用, 該函數裏面構建一個json的sdp數據發送給server(類型爲offer)
4. // C1 -- 服務器處理peer的請求和另一端聊天的數據
// peer B部分
5. PeerConnectionClient::OnHangingGetRead會收到服務器傳來的開啓視頻會話的命令
6. PeerConnectionClient::OnMessageFromPeer裏面繼續處理
7. 交給其回調Conductor::OnMessageFromPeer來處理
 


/////////////////////////////////////////////////////////////////
// C1
1. 在main的while循環裏面, server把"peer A請求向peer B進行通話的消息"發送給peer B



參考:

webrtc示例peerconnection_client&server


1. http://m.blog.csdn.net/blog/dragonimliutao2/36864785

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章