Random Id生成连接功能
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
var id = guid();
// Initialize a new peer and connect to our server
var peer = new Peer(id, {
host: 'webrtc-server-peerjs.herokuapp.com',
port: 443,
secure: true,
debug: 1
});
peer.on('error', function (err) {
console.log(err);
alert(err);
});
处理通话功能
function handleCall(call) {
call.on('stream', function (remoteStream) {
console.log(remoteStream);
console.log('set thier');
$('#call').hide();
$('#their-video').show();
//$('#their-video').prop('src', URL.createObjectURL(remoteStream));
$('#their-video').srcObject=remoteStream;
});
}
// Setting for chrome
var constraints = window.constraints = {
audio: true,
video: true
};
navigator.mediaDevices.getUserMedia(constraints)
.then(function (stream) {
window.localStream = stream;
//$('#my-video').prop('src', URL.createObjectURL(stream));
$('#my-video').srcObject=stream;
peer.on('call', function (call) {
call.answer(stream); // Answer the call with an A/V stream.
handleCall(call);
});
});
在页面加载上调用根函数
$(document).ready(function () {
$('#number').text(id);
$('#call').on('click', function () {
$(this).button('loading');
var id = prompt("Enter ID");
var call = peer.call(id, window.localStream);
handleCall(call);
})
})
一切似乎工作完美,但当我呼叫用户,我的流显示其他用户的流正确显示在我的屏幕上,但在另一侧用户无法看到我的流,在其他用户的屏幕上显示加载流然后得到错误在控制台
错误错误:( OperationError)无法设置本地商品sdp:调用错误状态:kHaveRemoteOffer
您使用的是哪个peerjs版本?我修复了https://github.com/peers/peerjs/pull/430中的类似问题,因此升级到最新版本可能会解决您的问题。