[英]Is WebRTC without any server not even a signaling server possible?
我正在嘗試為iOS設置cordova插件,該插件可在不使用任何服務器的情況下實現webrtc功能,並且只能在本地網絡上使用 。 我知道有這個插件 ,看起來很有希望,但是我有一些問題。 我的計划是不使用TRUN,STUN或任何類型的信令服務器。
也許您現在就在想:“ 好吧,這不可能。沒有信號就等於沒有連接。 ”但是讓我先解釋一下。 如此處和此處所指出的,可以避免使用TRUN,STUN或ICE服務器。 我認為這是啟動我的項目的好方法,但仍然存在一個未解決的問題。 如果沒有任何類型的信號(在本示例中,它們使用Node.js服務器),設備將如何彼此找到對方? 現在,我正在考慮包含所有必要信息的QR碼的想法。
這個想法是,進入房間的每個人都必須掃描RP上的QR碼,然后設備知道RP的IP,端口等,並且將建立與DataChannel的WebRTC連接。
我一直在尋找答案的幾天,但是由於(或至少出於某種原因)iOS甚至不支持WebRTC的事實(實際上),沒有太多在iOS上可用的WebRTC示例,並且沒有一個用於本地網絡。
所以我的問題是:我走對了路還是不可能? (我在任何地方都沒有找到關於此的示例,但是如果我將所有閱讀的文章放在一起,我認為應該是可能的。)
首先,TURN和STUN不是信令服務器。 信令服務器是通常與后端服務器關聯的術語,讓您在建立連接之前在兩個對等方之間中繼消息。 因此,信令服務器用於建立連接。 建立連接后,除非打算對連接參數進行任何更改,否則信令服務器在通信中將不再起作用。
另一方面,在建立連接的過程中使用TURN和STUN服務器。 它可以幫助兩個對等方找到彼此的直接路徑。 因此,建立連接后,對等方可以直接相互交談 ,並且不需要信令服務器再中繼消息。
現在問您的問題,簡短的答案是, 不,您的計划不完整。
為了使它起作用,您需要進行一些更改:
QR碼不足以傳達所有必需的信息。 根據此答案 ,他們可以存儲大約4kb的最大數據。 因此,僅通過所有候選人是不夠的。
更不用說WebRTC要求兩個設備共享候選者。 因此,您需要在Raspberry PI上使用顯示器和QR碼掃描儀。
您可能想探索諸如Wifi之類的替代方法,以實現設備與Raspberry Pi之間的雙向數據共享。 設置完成后,Wifi連接將充當信令服務器。
雖然我不太了解iOS或Raspberry Pi。 因此,如果您不確定該選擇什么,我建議您再問一個有關通信渠道選擇的問題。 請記住,您需要Raspberry Pi能夠在短時間內與設備通信,以便建立WebRTC連接。
來到STUN和TURN服務器,您可能可以不使用它們而逃脫。 我已經看到了幾種情況,當我的應用程序無需STUN和TURN服務器即可建立與本地網絡中同級的連接。
但是,我強烈建議您至少使用一個STUN服務器。 它們通常是免費提供的。 Google和Firefox還提供了自己的STUN服務器,您可以在任何WebRTC應用程序中使用它們。 您可以在互聯網上搜索以獲取其詳細信息。
僅當兩個對等方位於NAT之后時才需要TURN服務器。 在這種情況下,STUN服務器有時無法在它們之間找到直接路由,因此您需要TURN服務器來中繼音頻/視頻/消息流。
您在Raspberry Pi和電話之間建立WebRTC通道的計划(黑色箭頭)對我來說似乎不錯。 它將在需要時幫助您在兩部電話之間建立進一步的連接。
但是,如果您最終決定在Raspberry Pi上實現Wifi之類的功能,則WebRTC連接可能是多余的。 畢竟,您可以使用Wifi來回傳遞數據,而實際上並不需要額外的WebRTC通道層。
由於您在本地網絡上運行應用程序,因此不需要STUN和TURN服務器。 但是仍然需要一個信令服務器。 無法使用QR碼發出信號,請閱讀有關WebRTC的更多信息,您將了解原因。
但是信令服務器可能非常簡單。 由於您的本地網絡中有樹莓派,因此可以將其用作信令服務器。 只需在其上安裝node,express和socket.io。 您只需要一個簡單的javascript文件,我的只有23行代碼。 不要再浪費QR碼浪費時間了,您的信令服務器將立即啟動並運行。 您可以查看Google Codelab的示例。 希望這對您有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.