heroku + nodejs + SkyWay を使ってWebRTCビデオチャットを動かすメモ


WebRTCを触ってみたいなと思って調べていた際に、SkyWayが非常に手軽そうだったので、heroku上でサンプルを動かしてみました。

1. macでnodejsを動かす準備

  • anyenvを使用しているので、anyanvコマンドでndenvをインストール
anyenv install ndenv
exec $SHELL -l
  • nodejsインストール
ndenv install --list
ndenv install v0.10.28
ndenv global v0.10.28
node -v
# v0.10.28

2. herokuアプリ作成

  • herokudashboardからアプリを作成しておきます

  • アプリを作成し終わったらリポジトリをローカルにcloneしてきます

3. SkyWay登録

  • SkyWay公式サイトからAPIキーを申し込みます

skyway

  • ドメインにはherokuアプリのドメインを追加します

  • APIキー申請後、しばらくすると登録したメールアドレスにキーが送られてきます

  • 登録完了時にローカル専用のAPIキーが発行されるので、ローカル環境で開発する際や、APIキーが来るまではローカル専用キーを使って開発を進めます

4. nodejsで静的ファイル配信

  • 初期設定
npm init
npm install express
  • package.json
# package.json

  "dependencies": {
    "express": "*"
  },
  "engines": {
    "node": "0.10.28",
    "npm": "1.4.9"
  },
  • app.js
# app.js

var express = require('express');
var app = express();

app.use(express.static('public', { hidden: true }));

app.listen(process.env.PORT || 3000);

herokuデプロイ時にheroku側でportが設定されるように

process.env.PORT

を指定しておきます

  • publicディレクトリ作成
mkdir public
  • SkyWayに公開されているシンプルなビデオチャットのサンプルコードをお借りしてpublic以下に設置

  • index.html内のAPIキーを取得したものに置き換えます

new Peer({ key: 'APIキー', debug: 3});

5. herokuにデプロイ

  • Procfileの作成
# Procfile

web: node app.js
  • git push

pushすると自動でデプロイされます

まとめ

heroku + nodejs + SkyWayを用いることで手軽にWebRTCのビデオチャットサンプルを動かすことができました。

ビデオチャットの場合、カメラやマイクを使用するため、ブラウザからユーザに許可してもらう必要があります。

httpの場合は、毎回許可が求められますが、httpsの場合は一度認証すれば次回以降は省略できます。

herokuのデフォルトURLだとsslも特に設定なく利用できるので便利ですね。

今回はサンプルを動かしただけなので次はWebRTCを使って何か作りたいです。

参考