2015-12-04 50 views
4

我想在應用程序中設置一個會議模塊。所以我找到並創建了兩個用戶之間的流。Peerjs多個查看器

的問題是,別人不能加入。

我一直試圖在他們的文檔閱讀了,但是我似乎無法找出如何實現它。

這裏是我的代碼:

// Compatibility shim 
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; 

navigator.getUserMedia({audio: true, video: true}, function (stream) { 
    // Set your video displays 
    $('#my-video').prop('src', URL.createObjectURL(stream)); 
    window.localStream = stream; 
}, function() { 
    $('#step1-error').show(); 
}); 

peerFactory.on('error', function (err) { 
    alert(err.message); 
}); 

peerFactory.on('connection', function (id) { 
    alert('new logon' + id); 
}); 



// Receiving a call 
peerFactory.on('call', function (call) { 
    // Answer the call automatically (instead of prompting user) for demo purposes 
    var r = confirm('Ny kald fra '); 
    if (r) { 
     call.answer(window.localStream); 
     $scope.currentCall = true; 
     $scope.$apply(); 
     streamCall(call); 
    } 
    else 
    { 
     call.close(); 
     window.existingCall.close(); 
    } 
}); 

$scope.makeCall = function (callId) { 
    var call = peerFactory.call(callId, window.localStream); 
    $scope.currentCall = true; 
    streamCall(call); 
}; 

$scope.hangUp = function() 
{ 
    $scope.currentCall = false; 
    window.existingCall.close(); 
}; 

function streamCall(call) { 
    // Hang up on an existing call if present 
    if (window.existingCall) { 
     window.existingCall.close(); 
    } 

    // Wait for stream on the call, then set peerFactory video display 
    call.on('stream', function (stream) { 
     $('#their-video').prop('src', URL.createObjectURL(stream)); 
    }); 
    // UI stuff 
    window.existingCall = call; 
    $('#their-id').text(call.peerFactory); 
    call.on('error', function() { 
     var i = 0; 
    }); 
} 

誰能給我在正確的方向推?

回答

3

根據你的描述和你的代碼,我會說你試圖在同一個電話中連接兩個以上的用戶。

這對於WebRTC是不可能的,它只允許您爲每個對等連接連接兩端。他們可以複製多會議行爲的方式是爲每對參與者創建不同的呼叫。

爲了做到這一點,你需要每每個參與者和用戶列表不同video元素,讓你知道你需要您加入房間打電話給每個參與者的ID。

PeerJS won't give you a mechanism to know the other ID's in the room/call所以你需要找到一種機制讓新參與者知道。

我在我的AngularJS/Socket.io WebRTC通信工具的github中有一個example,隨時檢查它,看看如何使用WebRTC p2p連接再現多通道呼叫。

編輯:假設您的用戶擁有某種ID,並且程序的行爲方式與makeCall('Alice')類似,假設Alice在Carol致電Alice時與Bob打電話,並且您希望Carol與兩個人通話,則可以實施這沒有新的信令層:

  1. 愛麗絲與鮑勃通話
  2. 卡羅爾呼籲愛麗絲
  3. 愛麗絲接受來電
  4. Alice將使用DataChannel
  5. 012 Bob的ID卡羅爾
  6. 卡羅爾稱鮑伯
  7. 愛麗絲,鮑勃和卡羅爾在邏輯三方通話時對方