webrtc 客户端peerconnection_client代码分析

文件作用

Peer_connection_client

主要用于信令的建立,sdp和candidate的交换,可以理解该类就是一个sip客户端,主要由该类调用conductor类中的函数,建立媒体流;推荐的做法是使用子节点sip类替换该类,不改动其架构。

继承了下面两个类:
class PeerConnectionClient : public sigslot::has_slots<>,
public rtc::MessageHandler
所以当服务器发过来的socket信号通过此函数回调,例如void PeerConnectionClient::OnRead(rtc::AsyncSocket* socket)以及PeerConnectionClient::OnHangingGetRead

读socket消息
通过PeerConnectionClient::OnRead与PeerConnectionClient::OnHangingGetRead

主要包括下面的函数:
void PeerConnectionClient::OnMessageFromPeer

Conductor类,
主要是封装了webrtc抽象出来的类,用于建立媒体流;该类是建立媒体连接的核心类。Conductor实现PeerConnection PeerConnectionObserver,MainWndCallback 等回调方法。
class Conductor
public webrtc::PeerConnectionObserver,
public webrtc::CreateSessionDescriptionObserver,
public PeerConnectionClientObserver,
public MainWndCallback

下面底层库PeerConnection:
class PeerConnection : public PeerConnectionInterface,
public IceObserver,
public rtc::MessageHandler,
public sigslot::has_slots<> {
Conductor实现了PeerConnection一些方法,例:void Conductor::OnAddStream
PeerConnection里面包括:PeerConnectionClientObserver* callback_; 通过此函数 会调用Conductor重载类。
例:PeerConnection::OnIceCandidate===>PeerConnectionClientObserver::OnIceCandidate===>Conductor::OnIceCandidate
回调了void Conductor::OnIceCandidate 其作用收到信息,然后把信息通过SendMessage(writer.write(jmessage))发送
通过main_wnd_->QueueUIThreadCallback(SEND_MESSAGE_TO_PEER, msg)放入队列中,然后
UIThreadCallback回调,进行消息的发送。

发送消息
bool MainWnd::PreTranslateMessage(MSG* msg)=> Conductor::UIThreadCallback回调,进行消息的发送。

主要包括下面的函数:
1.void PeerConnectionClient::OnMessageFromPeer ========>void Conductor::OnMessageFromPeer 主要实现的功能是解析SDP信息或者ICE信息,如果是sdp调用 peer_connection_->SetRemoteDescription,如果ICE信息

2.Conductor::OnIceCandidate
收到ice信息,并且准备发送SendMessage(writer.write(jmessage));。

3.Conductor::UIThreadCallback 前面队列准备的信息,通过此函数发送。

Main_wnd类,
界面的实现,注意其消息循环。

Main.cc文件,
该文件是启动类,注意,因为webrtc内部很多地方使用的是异步调用,依赖系统的主消息循环,所以必须参考该类的写法,最好不要使用基于mfc的框架,如果旧的界面库无法弃用,建议做成两个不同的进程,使用进程间通信来完成通信的建立。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风口上的传奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值