PeerJSはWebRTCをラッピングし、P2P接続を行うライブラリです。

先日、WebRTCを使ったデモとしてGoogle ChromeとFirefoxが接続してチャットするデモがありましたら、それに近い処理を行えるチャットデモがPeerJSです。

[![](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.57.53_thumb.1361195085.png)](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.57.53.1361195085.png)
IDを相手に教えます。

[![](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.58.01_thumb.1361195089.png)](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.58.01.1361195089.png)
接続されました。

[![](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.58.16_thumb.1361195092.png)](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.58.16.1361195092.png)
日本語はうまく送信できませんでしたが、英語なら問題なく送信できます。

[![](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.59.32_thumb.1361195095.png)](http://images.moongift.jp/2013/02/Screenshot 2013-02-14 12.59.32.1361195095.png)
ネットワークは送信時に外部コンテンツを呼んでいるようです。

PeerJSではWebRTCを使ってP2Pによるデータ送信を行っています。WebRTCでは不足している機能を追加し、ラッピングしています。接続はid(識別子)を使って行います。Webブラウザ同士のデータ送受信デモとしては非常に面白いソフトウェアです。

PeerJSはJavaScript製のオープンソース・ソフトウェア(MIT License)です。

MOONGIFTはこう見る

WebRTCは主にWebカムなどのバイナリデータを送受信する際での利用を想定しています。そのため、速度によって画質を低下させたりコマ落ちしてしまうのは想定内となっています。確実な信頼性を必要とするならばWebSocketを使うべきでしょう。

Webブラウザが利用できるプロトコルはHTML5になって幾つも追加されています。それらの特性を把握し、必要に応じて使い分けられるようにしておきましょう。さらにそれらをレガシーなブラウザにどう適用するかも考えなければなりません。

PeerJS - Peer-to-peer data in the web browser

PeerJS chat demo

peers/peerjs-server · GitHub