webrtc p2p iOS

347 阅读1分钟

p2p思路适应安卓,iOS,web

一.SDP配置顺序

1.本地PC设置

  • 生成offer sdp 

[localPC offerForConstraints:constraints completionHandler:^(RTCSessionDescription * _Nullable sdp, NSError * _Nullable error) { }];

  • 将生成sdp通过信令发送给远端并设置本地setLocalDescription

[localPC setLocalDescription:sdp];
// sender sdp to server
  • 接收远端返回的Answer sdp
[localPC setRemoteDescription:answerSDP completionHandler:^(NSError * _Nullable error) {}]; 

2.远端PC设置

  • 接收远端发来的offer, 设置远端PC的sdp

[remotePC setRemoteDescription:sdp completionHandler:^(NSError * _Nullable error) {}];
  • 同时生成answer sdp回给远端, 并设置远端pc的本地sdp

[remotePC answerForConstraints:constraints completionHandler:^(RTCSessionDescription * _Nullable sdp, NSError * _Nullable error){   
  [remotePC setLocalDescription:sdp completionHandler:^(NSError * _Nullable error) {}]; 
   // 发送Answer的sdp给远端
}];


二、candiate发送给对端的时机

1.本地PC要在设置setRemoteDescription之后再发送candiate,这期间生成的candiate需要收集起来,等待上面被执行之后在发送。

2.远端PC要在设置生成answer内部再发送candiate,此期间的candiate先收集起来,等待上面发送完毕在发送给对端