Javascript Peerjs多个查看器

Javascript Peerjs多个查看器,javascript,peerjs,Javascript,Peerjs,我正在尝试在我的应用程序中设置会议模块。所以我在两个用户之间找到并创建了一个流 问题是其他人无法加入 我一直在努力阅读他们的文档,但我似乎无法找到如何实现它 这是我的密码: // Compatibility shim navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; navigator.getUserMedia({au

我正在尝试在我的应用程序中设置会议模块。所以我在两个用户之间找到并创建了一个流

问题是其他人无法加入

我一直在努力阅读他们的文档,但我似乎无法找到如何实现它

这是我的密码:

    // 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;
    });
}

有人能给我一个正确的方向吗?

根据您的描述和代码,我想说您正在尝试在同一个呼叫中连接两个以上的用户

这在WebRTC中是不可能的,它只允许您为每个对等连接连接两端。复制多冲突行为的方法是为每对参与者创建不同的调用

为了做到这一点,您需要为每个参与者提供不同的
视频
元素和一个用户列表,这样您就可以知道在您加入的房间中需要呼叫的每个参与者的id

因此,您需要找到一种机制,让新参与者知道

我的github中有一个AngularJS/Socket.io WebRTC通信工具,请随意查看,看看如何使用WebRTC p2p连接复制多通信调用

编辑:假设您的用户具有某种ID,并且您的程序的行为方式类似于
makeCall('Alice')
,假设当Carol呼叫Alice时Alice正在与Bob通话,并且您希望Carol与这两个用户一起加入通话,您可以在不使用新的信令层的情况下实现此功能:

  • 艾丽斯正在和鲍勃通话
  • 卡罗尔打电话给爱丽丝
  • 爱丽丝接电话
  • 艾丽斯用手机把鲍勃的身份证寄给卡罗尔
  • 卡罗尔打电话给鲍勃
  • 艾丽斯、鲍勃和卡罗尔正在用一种合乎逻辑的三方通话方式相互交谈