環境
Windows 10
node-v16.8.0-x64.msi
コマンドプロンプト
Google Chrome Version 93.0.4577.63 (Official Build) (64-bit)
注意
node.jsがLTS版の node-v14.17.5-x64.msi だと npm install Windowsのアクセス違反のエラーが出て動作しなかった
LTS版の方が安定していると信じこんでいて、少しはまってしまった
npm ERR! code 3221225477
背景
様々な環境で動作するWebRTCのライブラリを探している
ブラウザなしで、気楽に通信テストを行いたい
候補の1つとして、node-webrtc を触ってみる
node-webrtc とは
Node.js Native Addon that provides bindings to WebRTC M87.
「Node.js のネイティブのアドオンで、WebRTC M87準拠」と捉えればよいでしょうか
WebRTC M87は、 Nov 6, 2020にリリースされているようだ
node-webrtcのWebRTC M87対応は、Nov 3, 2020あたりにコミットされている
WebRTCのRelease Note
2021/9/2時点、以下のリストでは、M89が最新のようだ
node-webrtcサンプルを触ってみる
サンプルファイルの場所
サンプルの全体の処理の流れ
サンプルは、node.jsのExpressフレームワークを用いたWebアプリの形で提供される
node.js同士でWebRTC通信をするサンプルではなく、「node.jsサーバー」と「ブラウザ」でWebRTC通信するサンプル
browserifyを使って、コードをブラウザで動作するコードに変換している
RTCPeerConnection Negotiationは、REST API(HTTP)で実現している
RTCPeerConnection Negotiationの流れ
以下の図は、 https://github.com/node-webrtc/node-webrtc-examples より抜粋
Express フレームワークのHTTPサーバーを使って、LocalDescriptionとRemoteDescriptionを交換している
実行したコマンド
git clone https://github.com/node-webrtc/node-webrtc-examples.git
npm install
npm start
> node-webrtc-examples@0.1.0 start
> node index.js
http://localhost:3000
実行結果
ブラウザで、http://localhost:3000 を開く
以下は、一番、簡単そうな DataChannelを使ったテキストデータをやりとりするサンプルを実行した結果
ブラウザ側の Consoleにログが出ることを理解するまでに時間がかかった(実は一番、難しかった)
node.jsを実行したターミナルをずっと眺めていた
感想
node.jsの知識不足で、サンプルの構成を解読するのに時間がかかった
node.js(node-webrtc)同士で通信するサンプルではないという点を理解して、「node.js(node-webrtc)のコード」と「ブラウザ用のコード」を区別して理解する必要がある(同じjsファイルなので、これはどっちで実行されるのかな?と混乱してしまった)
node-webrtcを使えば、ブラウザで動作するWebRTCと同じように書けそうなので、取り急ぎ動かすならば、以下のコードを見るだけでよかったかもしれない
https://github.com/node-webrtc/node-webrtc-examples/blob/master/lib/server/connections/webrtcconnection.js
↧