0
我一直在嘗試在瀏覽器之間建立對等連接,以使用數據通道,但我不成功。 每當我更正一個語句時會出現另一個錯誤。爲Web RTC數據通道創建對等連接
首先我使用socket.io和Node.js建立了一個套接字服務器。在服務器上,當任何客戶端連接時,我正在發送'beacon'數據包。在收聽'信標'數據包時,第一個客戶請求加入'房間'。然後,我允許第二個客戶加入同一個「房間」。 第二客戶端連接後,服務器向客戶端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()
客戶端2在接收'offer'時將其設置爲遠程描述並創建'reply'。將「答覆」設置爲本地說明併發送。
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));
但它不工作! Pleease幫助。