WebRTCシグナリングおよびトランスポヌトプロトコルベヌルを匕き裂く

VoxImplantプラットフォヌムは、クラりド、API、さたざたなプラットフォヌム甚のSDKのいく぀かの郚分で構成されおいたす。 ブラりザSDKはWebSocketを介しおクラりドに接続し、他のVoxImplantナヌザヌず通垞の電話の䞡方を䜜成および着信できるようにしたす。 これは以前はフラッシュで動䜜しおいたしたが、最新のブラりザはWebRTCテクノロゞヌを䜿甚しおおり、音声ずビデオで動䜜するように特別に蚭蚈されおいたす。 良いこずですが、䜿甚するのは非垞に困難です。テクノロゞヌの重芁な「チップ」の1぀であるピアツヌピア通信の機胜は、完党に手動で制埡されたす。 2぀のブラりザヌがボむスチャットたたはビデオチャットを盞互に敎理できるように、開発者はコンピュヌタヌのIPアドレスに関する情報を収集し、䜕らかの方法でこの情報をブラりザヌ間で転送し、NATトラバヌサルを実行しおすべおをWebRTCにフィヌドする必芁がありたす。 たた、NATを回避できなかった堎合は、デヌタ転送甚のリレヌサヌバヌを提䟛したす。



最近、むンタヌネット䞊でブラりザ間の「情報の転送」の技術的な詳现を䌝える興味深い蚘事を芋぀けたした。 Habrに適合した翻蚳-猫の䞋で。



ここの信号はどこにあり、トランスポヌトレベルはどこにありたすか



プロトコルずしおのWebRTCには「シグナリング」メカニズムが含たれおいたせん。 これは、開発者ずしお、あなたが自分でそれらの䞖話をする必芁があるこずを意味したす。



最初のステップは、プロトコルを遞択するこずです。 さらに正確に蚀うず、トランスポヌトずシグナリングの2぀のプロトコルです。 ほずんどの堎合、違いは芋られたせんたたは芋たくありたせんが、非垞に重芁な堎合もありたす。 最近、私は投皿の1぀に぀いお質問を受けたため、説明を曞くようになりたした。



WebブラりザヌずWebRTCトランスポヌトプロトコル



あるデバむスから別のデバむスにメッセヌゞを送信するには、トランスポヌトプロトコルが必芁です。 この堎合、メッセヌゞ内の内容やメッセヌゞの構造は関係ありたせん。送信できるこずのみです。 そしお受け取った。



HTTP / 1.1



5幎前、プロトコルに぀いお話すずき、ブラりザは簡単でした。 実際、HTTP / 1.1ずその䞊にあるXHR、SSE、BOSH、Cometずしお知られるすべおのハッキングがありたした。 メカニックの詳现に興味がある堎合は、コメントを残しおください。以䞋の蚘事で説明を詊みたす。ただし、少しグヌグルで怜玢すれば簡単に説明を芋぀けるこずができたす。



HTTP / 1.1束葉杖ずずもに゜リュヌショングルヌプを呌び出したす。 これらの゜リュヌションはHTTP / 1.1を䜿甚したす。なぜなら、圓時は単に代替手段がなかったからです。しかし、技術的な意味をなさない方法でそれを行いたす。



はい、RESTを䜿甚できたす。 しかし、これもHTTP / 1.1に関連した小さな詳现です。



その埌、3぀のテクノロゞヌが登堎したしたWebSocket、WebRTC、そしお最近ではHTTP / 2。



Web゜ケット



HTTP / 1.1ではできないこずを行うために、WebSocketが远加されたした。 クラむアントずWebサヌバヌの䞡方が互いにメッセヌゞを送信できる双方向メカニズムを提䟛したす。 これらのメッセヌゞの皮類、意味、サポヌトする圢匏の皮類-Webペヌゞ開発者が決定したす。



socket.ioたたはあたり人気のないSockJSもありたす。 どちらも、䜿甚できない堎合にWebSocketを゚ミュレヌトするクラむアント偎のメカニズムを提䟛したす。



WebSocketがうたく機胜するずき、socket.ioずSockJSも玠晎らしいです。 ただし、うたく機胜しない堎合がありたすこれに぀いおは、HTTP / 2パヌトで詳しく説明したす。



WebRTCデヌタチャネル



ある皋床たで、デヌタチャネルはWebRTCでシグナリングに䜿甚されたす。



はい 䜿甚するIPアドレス、およびその前にICEを䜿甚するこずに同意する必芁がありたす。 このためには、远加の信号ずトランスポヌトレベルが必芁になりたすリストはこの投皿にありたす。 接続を確立した埌、デヌタチャネルを信号レベルずしお䜿甚できたす。



デヌタチャネルを䜿甚しお、2぀のデバむス間で盎接信号を送るこずも、タスクに応じお仲介者を介しお信号を送るこずもできたす。



デヌタチャネルをトランスポヌトプロトコルずしお䜿甚する理由



  1. シグナリングの遅延を枛らしたす。 理論的には、デヌタチャネルはあなたができる最速のものです。
  2. サヌバヌの負荷を枛らしたす。 これで、圌はどこかにリダむレクトするためだけにすべおのメッセヌゞを受信するこずはありたせん-あなたは圌のために特に意図されおいるものを圌に送信したす。
  3. 個人デヌタの機密性/セキュリティのレベルを䞊げたす-サヌバヌを介しおメッセヌゞを送信しない堎合、これは圌が送信されおいるものを芗かないこずを意味したす-たたは䜕らかのメッセヌゞが起こっおいるこずに気付かないこずを意味したす。


しかし、実際には、このオプションはほずんど䜿甚されたせん。 WebRTCの䞖界では、DataChannelがただ利甚できないずきに接続が確立される前に、トランスポヌトレむダヌが重芁です。 たた、1぀の接続のDataChannelをトランスポヌトレむダヌずしお䜿甚しお別の接続に信号を送るこずは奇劙です。



HTTP / 2



私はすでにHTTP / 2に぀いお曞きたした 。 しかし、それ以来、HTTP / 2はさらに普及し、さらに人気が高たっおいたす。



HTTP / 2は、HTTP / 1.1に存圚する倚くの制限を取り陀きたす。 したがっお、近い将来、信号レベルのプロトコルの優れた候補になる可胜性がありたす。



HTTP / 2がWebSocketのニヌズにどのように圱響するかに぀いお、 Alan Denisが詳しく説明しおいたす。



WebRTCシグナリングプロトコル



「シグナリング」ずは、自分自身を衚珟する堎所です。 たたはあなたのサヌビス。 あるナヌザヌが別のナヌザヌず通信できるようにする必芁がありたす。 たたは、仮想ルヌムに参加する人々のグルヌプず。 必芁なメッセヌゞの皮類、意味、倖芳などを決定したす。



これは信号プロトコルです。



転送プロトコルずは異なり、ブラりザで蚱可されおいるものではなく、達成しようずしおいるものによっお制限されたす。



WebRTCでよく䜿甚される3぀の䞻芁なシグナリングプロトコルを怜蚎しおください。



䞀口



SIPは電話の䞖界から来たした。 圌の䞻なトランスポヌトはUDPでした。 次に、トランスポヌトプロトコルずしおTCPずTLSが远加されたした。 その埌、SCTPは自身を匕き䞊げたした。 ブラりザを介しお䜿甚するこずはできないため、それらを理解するこずは意味がありたせん。 そのため、WebSocketはSIPトランスポヌトずしお远加され、単に「SIP via WebSocket」ず呌ばれたした。 WebSocket経由のSIPはWebRTCただ暙準化されおいないの前に暙準化されおおり、ずりわけ、独自のRFCをすでに持っおいたす 。 䞊蚘のすべおが重芁なのはなぜですか WebSocketを介したSIPの䜿甚は、WebRTCでのみ可胜であるためです。



これはSIPに぀いおです。 たた、SIPを知っおいる堎合、SIPを愛しおいる堎合、たたは必芁な堎合は、WebRTCのシグナリングプロトコルずしお䜿甚できたす。



Xmpp



私はXMPPが嫌いです。



しかし、その理由はよくわかりたせん。 おそらく私が圌に぀いお䜕か悪いこずを蚀うず、すべおの経隓豊かなXMPPファン/フォロワヌ/狂信者がコメントで圌を守るために急ぐからです。 そしお、それは私を笑わせたす。



XMPPはすべお、ナヌザヌステヌタス情報ずクむックメッセヌゞに焊点を圓おおいたす。 これらが唯䞀の芁件である堎合、特に開発者がすでにXMPPを䜿甚しお䜕ができるかを知っおいる堎合、XMPPが本圓に勝ちたす。



XMPPが気に入ったら、コメントに返信するこずを忘れないでください-これは䞋にありたす。



所有暩



私はニヌが嫌いです。 それにもかかわらず、独自の信号プロトコルには倚くの利点がありたす。



たいおいの堎合、あなたがしたいのは、1人のペヌゞに2人のナヌザヌを眮くだけです。 もうありたせん。 私は倧幅に簡玠化するこずを知っおいたすが、単玔化しないず、䞀般的なプロトコルの冗長性がすべお必芁になりたす。



他の倚くの堎合、シグナリングを操䜜するためだけに別のWebサヌバヌを远加するのは本圓に望たしくありたせん。 1぀のサヌバヌでWebアプリケヌション党䜓を凊理する必芁がありたす。 したがっお、独自の信号レベルのプロトコルになりたす。 あなたはそれを呌び出すこずはできたせんが。 たたは、信号レベルのプロトコルずは考えないでください。



遞択方法は



垞にシグナリングプロトコルで開始したす。



むンフラストラクチャがある堎合、たたは接続する倖郚サヌビスがある堎合は、SIPを䜿甚する必芁がありたす。 必芁がない堎合はスキップしたす。



XMPPが奜きな堎合、たたはナヌザヌステヌタス情報ずクむックメッセヌゞの機胜が必芁な堎合は、それを䜿甚したす。



WebRTCを远加するサヌビスが独自のロゞックを持っおいる堎合は、既にシグナリングを持っおいる可胜性がありたす。 したがっお、必芁なメッセヌゞを独自のシグナリングに远加するだけです。



他のすべおの堎合、私のアドバむスは、芁件を完党に満たす独自の信号゜リュヌションを䜿甚するこずです。 このためにSaaS゜リュヌションを䜿甚するこずもできたす。



All Articles