2015-03-23 5 views
1

Вот мой код для соединений с PeerJS:Имея несколько сверстников PeerJS?

var peer = new Peer({ key: '[PeerJSID]', debug: 3}); 
peer.on('open', function(){ 
    $('#my-id').text(peer.id); 
}); 
// Receiving a call 
peer.on('call', function(call){ 
    // Answer the call automatically (instead of prompting user) for demo purposes 
    call.answer(window.localStream); 
    step3(call); 
}); 
peer.on('error', function(err){ 
    alert(err.message); 
    // Return to step 2 if error occurs 
    step2(); 
}); 
// Click handlers setup 
$(function(){ 
    $('#make-call').click(function(){ 
    // Initiate a call! 
    var call = peer.call($('#callto-id').val(), window.localStream); 
    step3(call); 
    }); 
    $('#end-call').click(function(){ 
    window.existingCall.close(); 
    step2(); 
    }); 
    // Retry if getUserMedia fails 
    $('#step1-retry').click(function(){ 
    $('#step1-error').hide(); 
    step1(); 
    }); 
    // Get things started 
    step1(); 
}); 
function step1() { 
    // Get audio stream 
    navigator.getUserMedia({audio: true, video: false}, function(stream){ 
    // Set your video displays 
    $('#my-video').prop('src', URL.createObjectURL(stream)); 
    window.localStream = stream; 
    step2(); 
    }, function(){ $('#step1-error').show(); }); 
} 
function step2() { 
    $('#step1, #step3').hide(); 
    $('#step2').show(); 
} 
function step3 (call) { 
    // Wait for stream on the call, then set peer video display 
    call.on('stream', function(stream){ 
    $('#their-video').prop('src', URL.createObjectURL(stream)); 
    }); 
    // UI stuff 
    window.existingCall = call; 
    $('#their-id').text(call.peer); 
    call.on('close', step2); 
    $('#step1, #step2').hide(); 
    $('#step3').show(); 
} 

Я borrrowed этого кода, и мне было интересно, можно иметь несколько соединений между сверстниками, как группы вызова. Моя гипотеза заключается в том, что все, что мне нужно было бы сделать, это добавить новый аудио-объект, когда одноранговый узел обнаружит, что новый человек звонит, а затем его так, чтобы разные пользователи получали идентификаторы других пользователей и добавляли звуковые объекты на свои страницы также. Будет ли это работать? Есть ли более эффективный способ сделать это?

ответ

1

Одноранговый узел может поддерживать список выходящих потоков. Например, когда одноранговый узел подключается к системе, все остальные одноранговые узлы получат информацию и сохраняют идентификатор этого однорангового узла в своем списке. Когда одноранговый узел пытается начать вызов, он будет пересекать всех сверстников в своем списке. Один пример, который вы можете проверить, - peerjs-audio-chat Ноа Берни.

Смежные вопросы