簡體   English   中英

沒有任何服務器的WebRTC甚至不可能成為信令服務器嗎?

[英]Is WebRTC without any server not even a signaling server possible?

我正在嘗試為iOS設置cordova插件,該插件可在不使用任何服務器的情況下實現webrtc功能,並且只能在本地網絡上使用 我知道有這個插件 ,看起來很有希望,但是我有一些問題。 我的計划是不使用TRUN,STUN或任何類型的信令服務器。

也許您現在就在想:“ 好吧,這不可能。沒有信號就等於沒有連接。 ”但是讓我先解釋一下。 如此此處所指出的,可以避免使用TRUN,STUN或ICE服務器。 我認為這是啟動我的項目的好方法,但仍然存在一個未解決的問題。 如果沒有任何類型的信號(在本示例中,它們使用Node.js服務器),設備將如何彼此找到對方? 現在,我正在考慮包含所有必要信息的QR碼的想法。

最后,它應該看起來像這樣(黑色arrwos更重要): 規划網絡

這個想法是,進入房間的每個人都必須掃描RP上的QR碼,然后設備知道RP的IP,端口等,並且將建立與DataChannel的WebRTC連接。

我一直在尋找答案的幾天,但是由於(或至少出於某種原因)iOS甚至不支持WebRTC的事實(實際上),沒有太多在iOS上可用的WebRTC示例,並且沒有一個用於本地網絡。

所以我的問題是:我走對了路還是不可能? (我在任何地方都沒有找到關於此的示例,但是如果我將所有閱讀的文章放在一起,我認為應該是可能的。)

首先,TURN和STUN不是信令服務器。 信令服務器是通常與后端服務器關聯的術語,讓您建立連接之前在兩個對等方之間中繼消息。 因此,信令服務器用於建立連接。 建立連接后,除非打算對連接參數進行任何更改,否則信令服務器在通信中將不再起作用。

另一方面,在建立連接的過程中使用TURN和STUN服務器。 它可以幫助兩個對等方找到彼此的直接路徑。 因此,建立連接后,對等方可以直接相互交談 ,並且不需要信令服務器再中繼消息。

現在問您的問題,簡短的答案是, 不,您的計划不完整。

為了使它起作用,您需要進行一些更改:

  1. QR碼不足以傳達所有必需的信息。 根據此答案 ,他們可以存儲大約4kb的最大數據。 因此,僅通過所有候選人是不夠的。

    更不用說WebRTC要求兩個設備共享候選者。 因此,您需要在Raspberry PI上使用顯示器和QR碼掃描儀。

    您可能想探索諸如Wifi之類的替代方法,以實現設備與Raspberry Pi之間的雙向數據共享。 設置完成后,Wifi連接將充當信令服務器。

    雖然我不太了解iOS或Raspberry Pi。 因此,如果您不確定該選擇什么,我建議您再問一個有關通信渠道選擇的問題。 請記住,您需要Raspberry Pi能夠在短時間內與設備通信,以便建立WebRTC連接。

  2. 來到STUN和TURN服務器,您可能可以不使用它們而逃脫。 我已經看到了幾種情況,當我的應用程序無需STUN和TURN服務器即可建立與本地網絡中同級的連接。

    但是,我強烈建議您至少使用一個STUN服務器。 它們通常是免費提供的。 Google和Firefox還提供了自己的STUN服務器,您可以在任何WebRTC應用程序中使用它們。 您可以在互聯網上搜索以獲取其詳細信息。

    僅當兩個對等方位於NAT之后時才需要TURN服務器。 在這種情況下,STUN服務器有時無法在它們之間找到直接路由,因此您需要TURN服務器來中繼音頻/視頻/消息流。

  3. 您在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM