如何创建“有限”的 webrtc 连接?

问题描述 投票:0回答:1

在我的 webrtc 应用程序中(javascript、Windows、Firefox 中的对等体,我的 C++ 信令服务器):
对等点 1 启动连接(发送报价)向连接添加曲目,对等点 2 获取报价并发送答案,添加自己的曲目。
如果用户授予双方对媒体(相机、麦克风)的所有权利,则一切正常 -

getUserMedia
已解决。
我想创建一个“有限”连接:peer1 将没有摄像头和麦克风的权限,perr2 将拥有。

问题是:peer1 无法调用 addTrack(),因为它没有权限和要发送的曲目。所以,
negotiationneeded
不会因此被解雇。

问题是:peer1 如何强制
negotiationneeded
事件启动连接过程 - 发送您的报价等?

通过以下函数设置RtcPeerConnection(

peerConnection
字段为RTCPeerConnection类型):


    function InitWebRTC(userRecord) {

        const config = {iceServers: []};

        try {
            userRecord.webRtc.peerConnection = new RTCPeerConnection(config);
        }
        catch (err) {
            userRecord.webRtc.peerConnection = null;
        }

        if (userRecord.webRtc.peerConnection !== null) {
            
            if (settings.createDataChannel) {
                userRecord.webRtc.peerConnection.addEventListener("datachannel", rtc_OnRemoteDataChannel);
            }
            
            userRecord.webRtc.peerConnection.addEventListener("icecandidate", rtc_OnIceCandidate);
            userRecord.webRtc.peerConnection.addEventListener("negotiationneeded", rtc_OnNegotiationNeeded);
            
            userRecord.webRtc.peerConnection.addEventListener("connectionstatechange", rtc_OnConnectionStateChange);
            userRecord.webRtc.peerConnection.addEventListener("iceconnectionstatechange", rtc_OnIceConnectionStateChange);
            userRecord.webRtc.peerConnection.addEventListener("icegatheringstatechange", rtc_OnIceGatheringStateChange);
            
            let sigState = userRecord.webRtc.peerConnection.signalingState;
            //userRecord.webRtc.peerConnection.addEventListener('track', rtc_OnTrack);
            userRecord.webRtc.peerConnection.ontrack = rtc_OnTrack;

            userRecord.webRtc.peerConnection.onremovetrack = rtc_OnRemoveTrack;

        }

    } 
webrtc
1个回答
0
投票

如果您想依赖

negotiationneeded
事件,您可以使用
addTransceiver('video')
添加收发器而不是轨道,并将其
direction
设置为
recvonly

© www.soinside.com 2019 - 2024. All rights reserved.