【发布时间】:2014-04-03 14:34:49
【问题描述】:
我一直在尝试在浏览器之间建立对等连接,以使用数据通道,但我没有成功。 每次我更正一个语句时,都会出现另一个错误。
首先,我使用 socket.io 和 Node.js 建立了一个套接字服务器。在服务器中,当任何客户端连接时,我正在发送“信标”数据包。在侦听“信标”数据包时,第一个客户端请求加入“房间”。然后我允许第二个客户加入同一个“房间”。 一旦第二个客户端连接,服务器就会向客户端 1 发送一个确认数据包。
然后,在设置本地描述后,客户端 1 向客户端 2 发送 RTC Peer Connection '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()
客户端 2 在收到“报价”时将其设置为远程描述并创建“回复”。将“回复”设置为本地描述,然后发送。
if( message.type == 'offer' ) {
rDescp = new RTCSessionDescription(message.sdp);
localPC.setRemoteDescription( rDescp );
localPC.createAnswer(
function( answer ) {
lDescp = new RTCSessionDescription(answer);
localPC.setLocalDescription( lDescp );
socket.emit( 'reply', JSON.stringify(answer) );
}, sendFail
);
}else {
localPC.addIceCandidate = new RTCIceCandidate( message.candidate );
}//End Of IF ELse
客户端 1 在收到“回复”时将其设置为远程描述,并且应该建立连接???
localPC.setRemoteDescription( new RTCSessionDescription( message.sdp ) );
但它不起作用!请帮忙。
【问题讨论】:
标签: webrtc