2015-02-06 73 views
2

對不起,我的英語。我在webRTC有問題。我的應用程序在同一個網絡中正常工作,但不同的是錯誤的。WebRTC在不同的網絡中沒有視頻

技術,我用:

  • socket.io
  • 節點
  • CoffeeScript的
  • 一飲而盡
  • zenserver

在這種github上我把我的代碼:github/oihi08/webrtc

我不知道爲什麼應用程序不能與不同的網絡一起運行。我已經上傳到服務器,我試過了,什麼都沒有。但在同一個網絡中是的。

非常感謝你!

+0

我們在這裏需要更多信息。不同的網絡可以接受連接(防火牆,NAT等),您是否使用了正確設置和格式化的TURN服務器等。 – 2015-02-06 14:41:00

+0

您的套接字是否始終爲「localhost:8080」?遠程客戶端如何連接到您的服務器以進行消息傳遞? – 2015-02-06 15:46:38

+0

我還測試了服務器上的套接字,但無法正常工作。我不太瞭解這個話題,我正在學習WebRTC。 – oihi08 2015-02-09 12:25:32

回答

2

這聽起來像你沒有使用STUN/TURN服務器。在兩個設備之間創建連接有幾個步驟。其中一個步驟是選擇一個或多個STUN/TURN服務器(例如,「stun:stun.l.google.com:19302」)。即使在一端或兩端都有防火牆的情況下,該服務器也將用於在對等端之間創建連接。

當您設置一個或多個STUN/TURN服務器時,您將看到候選冰將開始生成。將爲每個生成的候選冰塊調用回調函數peerConnection.onicecandidate。當圖書館完成產生候選人的候選人時,它會以NULL作爲參數再次呼叫回叫,這會標記候選人列表的末尾。

您需要以某種方式將這些候選冰塊傳遞給另一個同伴,通常通過您首先用於創建連接的同一個信令服務器。當他們到達另一端時,您需要調用peerconnection.addIceCandidate。

如果您執行這些步驟,即使是跨嚴格NAT類型的網絡,您也可以獲得正確的連接。

+0

如果您只查看發佈的源代碼,您會看到他正在使用TUN的STUN服務器。 – 2015-02-06 15:44:20

+0

@BenjaminTrent如果你剛剛閱讀我的答案,你會發現他也需要一個TURN服務器。他也沒有派他的ICE候選人,也沒有將他們設置在另一邊。 – lorenzo373 2015-02-06 15:45:37

+0

它看起來像我正在處理'onicecandidate'和信號通過...除非該邏輯不適用於咖啡腳本。 – 2015-02-06 15:49:13