へんてこのブログ

日々気づいたことや、最近やっていることを書いています

peer.jsで複数人チャットをする

はじめに

peer.jsで複数人でのチャットって出来るのかなと思い公式のドキュメント見てたら普通にpeer.connectionsってのがあったから試してみた

やり方

普通に1対1のチャットを実装するやり方とほぼ同じである
違うのが、データを受信するDataConnectionのon('data')にてpeer.connectionsを使い、受信したmessageを他のpeerに送るということをする
具体的にはこんな感じ

conn.on('data', function(data) {
  var id = data.ids[0];
  var ids = data.ids;
  var message = data.message;
  $.each(peer.connections, function(_id, _conn) {
    if($.inArray(_id, ids) == -1) {
      ids.push(myId);
      _conn[0].send({
        message: message,
        ids: ids
      });
    }
  });
});

ここで注意すべきは、送信データとして既に送られたidを記録しながら送っていくという所だ
messageを受信したpeerは自身のidをidsに入れて、まだidsの中にidが入っていないpeerに送信をする
バケツリレーみたいにどんどん運んでいくイメージだと思う

まとめ

詳しくは今回作ったサンプルを見てもらいたい
peer.js使ったら簡単に複数人対応のチャット作れるし便利
クライアント側だけの実装で作れるのすごい簡単

あと、なんとなくすごいpeer.jsのドキュメントが見やすい気がする