2015-10-18 179 views
0

我試圖實現一個單向語音傳輸與webRTC和PHP作爲服務器端。音頻/語音網絡RTC

看着samples,我不明白webRTC機制。

我看到它的方式,流程應該是這樣的:

  1. 來電和服務器收件人寄存器
  2. 收件人監聽來電
  3. 來電詢問服務器接收方的IP
  4. 服務器發送IP給呼叫者
  5. 呼叫者直接連接到收件人

然而sample code,(即在本地機器上運行)

function call() { 
    trace('Starting call'); 
    var servers = null; 
    var pcConstraints = { 
    'optional': [] 
    }; 
    pc1 = new RTCPeerConnection(servers, pcConstraints); 
    trace('Created local peer connection object pc1'); 
    pc1.onicecandidate = iceCallback1; 
    pc2 = new RTCPeerConnection(servers, pcConstraints); 
    trace('Created remote peer connection object pc2'); 
    pc2.onicecandidate = iceCallback2; 
    pc2.onaddstream = gotRemoteStream; 
    trace('Requesting local stream'); 
    navigator.mediaDevices.getUserMedia({ 
    audio: true, 
    video: false 
    }) 
    .then(gotStream) 
    .catch(function(e) { 
    alert('getUserMedia() error: ' + e.name); 
    }); 
} 

不使用IP地址,或任何種類的識別記號的,可以被翻譯成IP

這怎麼可能?

+0

https://github.com/webrtc/samples –

回答

4

要開始使用,您需要在客戶端之間提供某種信號通道。大多數人通過WebSockets使用一些協議(通常基於JSON或SIP),以便像Node.js,SIP服務器或後端的消息代理那樣可以在兩個客戶端之間進行橋接。您幾乎可以發送直接從WebRTC PeerConnection中獲取的數據塊。這包括SDP,ICE候選者等。PeerConnection可以直接使用從另一個對等生成的數據,因此您不必處理格式化數據。將它打包成一個JSON對象並通過WebSockets發送給Node,讓Node將它發送給另一端。它由你來設計註冊端點如何找到對方並創建這個橋樑。

我們在WebSockets上使用了MQTT來做到這一點。在我們的模型中,每個客戶訂閱自己的MQTT主題,每方都可以在這些主題上向其他客戶發佈消息。客戶端使用訂閱了主題的後端服務註冊這些主題,或者您可以使用保留的消息讓MQTT代理管理主題。你可以在這裏閱讀更多關於我們的方法:http://www.wasdev.net/webrtc。我們開放源代碼信令協議,您可以使用任何開放的MQTT代理。我們還創建了包含您可以在此處玩的AngularJS模塊的SDK:http://angular-rtcomm.wasdev.developer.ibm.com/

+0

Upvote for first paragraph。良好的信號基礎總結。 – xdumaine