问题描述
这是我与PeerJS连接的代码:
Here is my code for connections with 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();
}
我浏览了此代码,我想知道在同级之间是否可以有多个连接,例如呼叫组.我的假设是,当对等方检测到有人打来电话时,我需要做的就是添加一个新的音频对象,然后让其他用户接收其他用户的ID,并将音频对象添加到他们的页面中也一样这行得通吗?有更有效的方法吗?
I borrrowed this code, and I was wondering it is possible to have multiple connections between peers, like a call group. My hypothesis is that all I would have to do is add a new audio object when the peer detects that a new person is calling, and then have it so the different users receive the ids of the other users and have audio objects added to their pages as well. Would this work? Is there a more efficient way to do it?
推荐答案
对等方可以维护输出流的列表.例如,当一个对等方连接到系统时,所有其他对等方都将得到通知,并将该对等方的ID保存到其列表中.当一个对等方尝试开始呼叫时,它将遍历其列表中的所有对等方.您可以查看的一个示例是Noah Burney的 peerjs-audio-chat .
A peer can maintain a list of out-coming streams. For example, when a peer connects to the system, then all the other peers will get informed, and save the id of this peer to their list. When a peer tries to start a call, it then will traverse all the peers in its list. One example you can check is the peerjs-audio-chat by Noah Burney.
这篇关于有多个同行PeerJS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!