Javascript WebRTC onicecandidate事件
我对RTPeerConnection的onicecandidate事件有以下回调:Javascript WebRTC onicecandidate事件,javascript,html,video,webrtc,Javascript,Html,Video,Webrtc,我对RTPeerConnection的onicecandidate事件有以下回调: function iceCallback(event) { if (event.candidate) { var candidate = event.candidate; socSend("candidate", candidate. event.target.id); } } 我能够从事件中读取候选人。候选人。但是当我尝试读取event.target.id时,我
function iceCallback(event) {
if (event.candidate) {
var candidate = event.candidate;
socSend("candidate", candidate. event.target.id);
}
}
我能够从事件中读取候选人。候选人。但是当我尝试读取event.target.id时,我得到一个异常,无法读取未定义的属性target
“id”是我以前为RTPeerConnection创建的属性。这是一个多用户视频聊天
我正在尝试找出哪个RTPeerConnection触发了onicecandidate事件,以便知道需要将icecandidate发送到哪个客户端。我正在使用adapter.js库。我假设您的代码的某些部分如下所示,我刚刚添加了一个简单的修改:
peerConnections ={};
function createNewConncection(id){
var pc = new RTCPeerConnection();
pc.onaddstream = ...
...
//pc.onicecandidate = iceCallback; // OLD CODE
pc.onicecandidate = iceCallback.bind({pc:pc, id:id}); // NEW CODE
peerConnections[id] = pc;
}
function iceCallback(event) {
if (event.candidate) {
var candidate = event.candidate;
//socSend("candidate", candidate. event.target.id); // OLD CODE
socSend("candidate", this.id); // NEW CODE
}
}
谢谢你的意见。你能解释一下iceCallback.bind({pc:pc,id:id})的变化吗;假设onicecandidate事件签名不接受任何参数?通过
bind
我们指定被调用函数的this
值,在这种情况下,因为我们无法更改或添加参数到onicecandidate
,所以我刚刚将所需信息作为this
绑定到iceCallback
,束缚