Joiner 管理 Initiator 的 offer
图5-12 显示了 Joiner 在收到发起者的 SDP offer 后采取的操作。
实际上,如下面的 JavaScript 代码片段所示,当 offer 到达 Joiner 时,首先运行 checkAndStart()
函数:
// Receive message from the other peer via the signalling server
socket.on('message', function (message) {
console.log('Received message:', message);
if (message === 'got user media') {
...
} else if (message.type === 'offer') {
if (!isInitiator && !isStarted) {
checkAndStart();
}
pc.setRemoteDescription(new RTCSessionDescription(message));
doAnswer();
} else if (message.type === 'answer' && isStarted) {
...
图5-12 参加 Initiator 的 offer 后,Joiner 的操作
当由 Joiner 执行时,此函数将创建 Joiner 的 PeerConnection
对象并设置 isStarted
标志:
function checkAndStart() {
if (!isStarted && typeof localStream != 'undefined' && isChannelReady) {
createPeerConnection();
isStarted = true;
if (isInitiator) {
...
}
}
}
如第121页 的 “ Joiner 的 answer
” 中所述,一旦使用 checkAndStart()
函数完成,Joiner 仍然必须配置其本地 PeerConnection
并正确构建 SDP answer
以发送回发起方。 在下文中,我们将首先简要讨论双方所需的 ICE 候选人交换程序。
当前内容版权归 Salvatore Loreto & Simon Pietro Romano 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Salvatore Loreto & Simon Pietro Romano .