webrtc中的多对等连接

时间:2015-03-16 07:12:45

标签: javascript

我使用数组pc将RTCPeerConnections从1个客户端保存到其他客户端,然后调用createOffer

pc是全局变量但有错误:在createOffer函数中,我得到pc[list[i]]undefined。我该如何解决?

for (var i = 0; i<list.length - 1; i++) {
    pc[list[i]] = createPC(list[i]);
    pc[list[i]].createOffer(function (localDesc) {
        pc[list[i]].setLocalDescription(localDesc);
        send(localDesc, list[i]);
    }, doNothing, constraints);
}

1 个答案:

答案 0 :(得分:4)

必须是for循环内部回调的常见问题,请尝试绑定i的值:

for (var i = 0; i<list.length - 1; i++) {
    pc[list[i]] = createPC(list[i]);
    (function(i){
        pc[list[i]].createOffer(function (localDesc) {
            pc[list[i]].setLocalDescription(localDesc);
            send(localDesc, list[i]);
        }, doNothing, constraints);
    })(i);
}

编辑:

另一个选项可能是(我假设列表是唯一ID的列表):

...
for (var i = 0; i<list.length - 1; i++) {
    var id = list[i];
    pc[id] = createPC(id);
    pc[id].createOffer(onOffer.bind({id:id}), doNothing, constraints);
}
...
function onOffer(localDesc){
    pc[this.id].setLocalDescription(localDesc);
    send(localDesc, this.id);
}