У меня есть сервер apache, на котором работает php, и мой интерфейсный код peerjs:
<script>
$(function(){
//returns element value of GET key (e.g '&test=2'returns 2)
function getParameterByName(name){
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
function getAudio(successCallback, errorCallback){
navigator.getUserMedia({
audio: true,
video: false
}, successCallback, errorCallback);
}
//request call
var from = getParameterByName('from');
var to = getParameterByName('to');
$('#start-call').click(function(){
console.log('starting call...');
getAudio(
function(MediaStream){
console.log('now calling ' + to);
var call = peer.call(to, MediaStream);
call.on('stream', onReceiveStream);
},
function(err){
console.log('an error occured while getting the audio');
console.log(err);
}
);
});
//recieve call
function onReceiveCall(call){
console.log('peer is calling...');
console.log(call);
getAudio(
function(MediaStream){
call.answer(MediaStream);
console.log('answering call started...');
},
function(err){
console.log('an error occured while getting the audio');
console.log(err);
}
);
call.on('stream', onReceiveStream);
}
function onReceiveStream(stream){
var audio = document.querySelector('audio');
audio.src = window.URL.createObjectURL(stream);
audio.onloadedmetadata = function(e){
console.log('now playing the audio');
audio.play();
}
}
var peer = new Peer({host: 'www.example.com', port:9000, path:''});
peer.on('open', function(id) {
console.log('My peer ID is: ' + id);
});
peer.on('call', onReceiveCall);
});
</script>
<div id = "start-call"> Start Call </div>
<audio controls></audio>
И затем у меня есть сервер узла, который запускает одноранговый сервер на порту 9000:
var fs = require('fs');
var PeerServer = require('peer').PeerServer;
var server = PeerServer({
port: 9000,
ssl: {
key: fs.readFileSync('/xxx/xxx/privkey.pem'),
cert: fs.readFileSync('/xxx/xxx/cert.pem')
},
proxied: true
});
server.on('connection', function(id) {
console.log("connecion made:" + id);
});
При использовании Chrome в консоли переднего плана не появляется никаких ошибок, и я получаю приглашение "Connection made: 35hy2o4ydfqw"
. Поэтому, когда я нажимаю «Начать вызов», консоль выводит "now calling xxx..."
, однако с другой стороны вообще ничего не получено, поэтому я предполагаю, что это
peer.on('call', onReceiveCall);
Звонок не принимается. Дается очень мало намеков на то, что происходит не так на стороне получателя, абсолютно ничего не происходит.
Спасибо за любую помощь или совет.