Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScriptとNode.jsでWebRTCを実装してみた

 TypeScriptとNode.jsでWebRTCを実装してみた

WebRTC Meetup Online #1

開発リポジトリ
https://github.com/shinyoshiaki/werift-webrtc

shinyoshiaki

July 16, 2020
Tweet

More Decks by shinyoshiaki

Other Decks in Programming

Transcript

  1. 自己紹介 • Yoshiaki Shin • 3月に大学を卒業 • NTTコミュニケーションズ株式会社 ◦ SkyWayの中の人

    大変な年に社会人になってしまった まだオフィスに1度しか出社できてない。リモート飽きた(笑) @ShinYoshiaki
  2. 目次 • WebRTC実装とは • WebRTCの実装方法 • プロトコル実装 ◦ ICE ◦

    DTLS ◦ SCTP ◦ DCEP , DataChannel ◦ PeerConnection • DEMO • 感想など
  3. DTLS aiortcはDTLSを実装していない(OpenSSL) DTLSはTLSの亜種。TLSは日本語の資料も豊富 ・実装方法  関連RFC, TLSの資料, 既存のDTLS実装などを参考に実装 ・動作確認  OpenSSLとの通信疎通を確認  

    openssl s_client -dtls1_2 -connect 127.0.0.1:xxxx    openssl s_server -dtls1_2 -accept 127.0.0.1:xxxx -cert ./xxxx -key ./xxxx DatagramのためのTLS的なやつ 通信の暗号化 https://github.com/shinyoshiaki/rainy-dtls
  4. SCTP (user land)  IPの上で動く本来のSCTPではない ・実装方法  RFC , aiortc , pion

    などを参考に実装  transportを抽象化している (ICE , DTLS , etc…..) ・動作確認  pion/sctpをSCTP over UDPとして通信疎通を確認 Streamの輻輳制御、順序制御 https://github.com/shinyoshiaki/rainy-sctp
  5. DCEP , DataChannel ・実装方法 draft文章 , aiortc などを参考に実装 ・動作確認 aiortc

    のテストコードを参考にテスト DCEP : SCTPの上でDataChannelを開くプロトコル https://github.com/shinyoshiaki/rainy-webrtc
  6. TypeScript (Node.js) で実装した感想 • たいへん ◦ Node.jsは標準の暗号化周りが貧弱 ▪ ライブラリを探さないといけない ▪

    Goが羨ましい • 型の強弱をコントロールできて開発者体験が良い • VsCodeでbreakpoint置いて変数の中が見れる(他言語もできる....) 既存の実装と通信疎通した時の達成感は凄い