原因:由于今天需要了解一下webRTC源码中examples里面client与server的信令交互.
概况:server只是起到一个转发的过程.将连接的client信息以及client发送的candidate数据转发给同房间的其他client.
介绍:
首先启动server服务器.可以看出server服务器为一个简单的tcp服务器.通过select进行socket对象的遍历.其中主要处理的命令为sign_in,sgin_out,wait,及post转发.client为登录server,并获取server发送的对端信息,和发送本机的信息。下面重点分析一下client流程。
client:
首先填写ip和端口,然后点击登录按钮,触发事件为main_wnd中OnMessage方法.代码如下,通过如下代码可知当BN_CLICHED被触发则会调用OnDefaultAction方法。而onDefaultAction方法首先为连接对端服务器.故将会调用startLogin方法
case WM_COMMAND:
if (button_ == reinterpret_cast<HWND>(lp)) {
if (BN_CLICKED == HIWORD(wp))
OnDefaultAction();
} else if (listbox_ == reinterpret_cast<HWND>(lp)) {
if (LBN_DBLCLK == HIWORD(wp)) {
OnDefaultAction();
}
}
void MainWnd::OnDefaultAction() {
if (!callback_)
return;
if (ui_ == CONNECT_TO_SERVER) {
std::string server(GetWindowText(edit1_));
std::string port_str(GetWindowText(edit2_));
int port = port_str.length() ? atoi(port_str.c_str()) : 0;
callback_->StartLogin(server, port);
} else if (ui_ == LIST_PEERS) {
LRESULT sel = ::SendMessage(listbox_, LB_GETCURSEL, 0, 0);
if (sel != LB_ERR) {
LRESULT peer_id = ::SendMessage(listbox_, LB