Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webrtc 为Web RTC数据通道创建对等连接_Webrtc - Fatal编程技术网

Webrtc 为Web RTC数据通道创建对等连接

Webrtc 为Web RTC数据通道创建对等连接,webrtc,Webrtc,我一直在尝试在浏览器之间建立对等连接,以使用数据通道,但没有成功。 每次我更正一个语句,就会出现另一个错误 首先,我使用socket.io和Node.js建立了一个socketting服务器。在服务器中,当任何客户端连接时,我发送“信标”数据包。在侦听“信标”数据包时,第一个客户端请求加入“房间”。然后我允许第二个客户加入同一个“房间”。 一旦第二个客户端连接,服务器就向客户端1发送确认数据包 然后,在设置本地描述后,客户端1向客户端2发送RTC对等连接“offer” if( isChr

我一直在尝试在浏览器之间建立对等连接,以使用数据通道,但没有成功。 每次我更正一个语句,就会出现另一个错误

首先,我使用socket.io和Node.js建立了一个socketting服务器。在服务器中,当任何客户端连接时,我发送“信标”数据包。在侦听“信标”数据包时,第一个客户端请求加入“房间”。然后我允许第二个客户加入同一个“房间”。 一旦第二个客户端连接,服务器就向客户端1发送确认数据包

然后,在设置本地描述后,客户端1向客户端2发送RTC对等连接“offer”

    if( isChrome )          {
        localPC = new window.webkitRTCPeerConnection(server, contraints);
        rslt.innerHTML = "Webkit Variables Set";
    }else       {
        localPC = new mozRTCPeerConnection(server, contraints); 
        rslt.innerHTML = "Mozilla Variables Set";
    }

    localPC.onicecandidate = function(event)    {
        if( event.candidate )
            localPC.addIceCandidate( event.candidate );
    };

    localPC.onnegotiationneeded = function()        {
        localPC.createOffer( setOffer, sendFail );
    };  

    sendChannel = localPC.createDataChannel( "sendDataChannel", {reliable: false} );

    localPC.ondatachannel = function(event)     {
        receiveChannel = event.channel;
        receiveChannel.onmessage = function(event)  {
            rslt.innerHTML = event.data;
        };
    };

    localPC.createOffer( setOffer, sendFail );



function setOffer( offer )      {

    lDescp = new RTCSessionDescription(offer);

    localPC.setLocalDescription( lDescp );

    socket.emit( 'offer', JSON.stringify(offer) );

    rslt.innerHTML += "Offer Sent...<br/>";//+offer.sdp;                                    

}//End Of setOffer()    
客户端1在收到“回复”时将其设置为远程描述,并且应建立连接

    localPC.setRemoteDescription( new RTCSessionDescription( message.sdp ) );

但它不起作用!!!请提供帮助。

看起来您的流程是正确的,尽管我看不到完整的代码。 让我感到奇怪的是:

localPC.onicecandidate = function(event)    {
        if( event.candidate )
            localPC.addIceCandidate( event.candidate );
};
您需要将在onicecandidate事件中接收到的icecandidate发送给其他对等方。不要自己加上去

localPC.onicecandidate = function(event)    {
        if( event.candidate )
            localPC.addIceCandidate( event.candidate );
};