3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WebRTCを調べてみた

Last updated at Posted at 2017-12-01

※自分の調査メモ

自分のプライベートIPの確認

↓このサイトにアクセスすると、自分のプライベートIPアドレスが分かります。
http://ip-api.com/
普通、プライベートIPは分からないはずなのにどうやっているのか?
WebRTCが使われています。
このip-api.com、githubでソースが公開されており、なんとシングルページのhtmlです。
https://github.com/vladc/ip-api.com
source.htmlの中のget_internal()という関数でプライベートIPを取得しています。

2者間でカメラの映像をやり取りする

simpleWebRTCというライブラリを使うとムチャクチャ簡単にできます。
https://simplewebrtc.com/
このページのトップに書かれているわずかなhtmlとJavaScriptをコピペするだけ。
(htmlはhttpsのサイトに置かないとカメラが使えないので注意)

ただし、プロダクションで使うにはSTUNサーバやシグナリングサーバを自前で立てる必要があり、そこが面倒そうです。
simplewebrtcのデフォルトで設定されているのはこれ:
シグナリングサーバ:https://github.com/andyet/signalmaster
STUN&TURNサーバ:https://github.com/otalk/restund

TURNサーバのホスティングもあるらしい。
https://xirsys.com/simplewebrtc/

テキストチャットのデモ

デモ
https://www.webrtc-experiment.com/text-chat/
ソースコード
https://github.com/muaz-khan/WebRTC-Experiment/tree/master/text-chat

Atomのteletypeをパケットキャプチャしてみたところ

WebRTCは基本的にUDPベースです。
片方のAtomでキーを入力する度にパケットが送られているようです。そのとき必ず応答パケットも送られるので、ACKをしてるのだと思います。
UDPはパケットの到達順序も保証されないですが、SCTP(UDP+TCPみたいなもの)を使っているので、到達順序は保証されるようです。

teletypeのソースをgrepしてみたところ、必ず使っているはずの RTCPeerConnection などがありませんでした。atom本体の方に組み込まれているのだろうか?

同一LAN内のマシンで通信する場合

STUNによるNAT越えの説明を読む限り、一度ルータを出てグローバルIPを使って通信しそうと思ったのですが、ちゃんとプライベートIPで通信していました。

For More Info

WebRTC Advent Calendarが参考になりそう
https://qiita.com/yusuke84/items/286f569d110daede721e

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?