hakobera's blog

技術メモ。たまに雑談

Tuppari - WebSocket on Your Cloud -

Tuppari とは

東京Node学園 6時限目で発表した Node.js で作られた Pusher クローンです。
簡単に言うと WebSocket を利用した大規模 Broadcast に特化したサービスです。

インフラとしては Amazon Web Services (以降、AWS)上で動かすことに最適化されていますが、AWS以外でも動かすことは可能です。つまり、クラウド上に自分自身の Pusher を構築することが可能になります。

現時点では Pusher の機能には追いついていませんが、今後も鋭意開発を進めていくので、是非使ってみてください。
あと、WebSocket を使うので、IE9 以下では動きません。

8/15 追記: v0.2.0 から IE もサポートしました。
詳細は以下の記事を参照して下さい。
Tuppari コミュニティ始めました & IE に対応しました - Scalaとlift のはずだった ・・・

Tuppari 公開記念ハッカソン

興味があればどうぞー。
ご希望があれば、Tuppari の使い方、各自の環境へのインストール方法などサポートします。

Node塾番外編 Real-time Web ハッカソン - [PARTAKE]

ソース

CLI & npm モジュール: https://github.com/tuppari/tuppari

サーバ実装: https://github.com/tuppari/tuppari-servers

試してみよう

Tuppari は各自のインフラで動作させることを想定していますが、インストール済みサンプルとして、 https://api.tuppari.com でサービスを稼働させてありますので、まずはお試しください。

公式ドキュメント: https://github.com/tuppari/tuppari/wiki

Tuppari Command Line Interface のインストール

まずは、Tuppari CLI を npm でインストールします。

npm install -g tuppari
アカウントの作成

まずは、アカウントを作成します。
アカウント名は他人と同じものは使用できません。

tuppari register [YOUR_ACCOUNT_NAME]
Password: [ENTER YOUR PASSWORD]

Create new account name "[YOUR_ACCOUNT_NAME]" success.
ログイン

アカウントを作成したらログインします。

tuppari login
Account Name: [ENTER_YOUR_ACCOUNT_NAME]
Password: [ENTER_YOUR_PASSWORD]

Login success.
アプリケーションの作成
tuppari create [YOUR_APPLICATION_NAME]

Create a new application named "[YOUR_APPLICATION_NAME]" success.
Following is the application Information to access from your code.
{
  "applicationId": "[SHOW_YOUR_APPLICATION_ID]",
  "accessKeyId": "[SHOW_YOUR_ACCESS_KEY_ID]",
  "accessSercretKey": "[SHOW_YOUR_ACCESS_SECRET_KEY]"
}

ここで出力される情報は後で使うので、メモしておいてください。

HTML ファイルの作成
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
  <!-- 1. Include the Tuppari client JavaScript libraries on your page from CDN -->
  <script src="http://cdn.tuppari.com/0.1.0/tuppari.js"></script>
  <script>
    // 2. Instantiate connection object to tuppari server. 
    var client = tuppari.createClient({
        applicationId: 'YOUR_APPLICATION_ID' // Replace this with your Application ID.
    });
    // 3. Create channel you want to use.
    var channel = client.subscribe('your_channel');
    // 4. Listen for some events on you channel
    channel.bind('your_event', function (data) {
      console.log('An event was triggered with message: %s', data);
    });
  </script>
</head>
<body>
</body>
</html>
Node.js のコードからイベントを発行する

package.json と app.js を以下のように作成します。

package.json

{
  "name": "helloworld",
  "version": "0.1.0",
  "dependencies": {
    "tuppari": "0.1.0"
  }
}

app.js

var Tuppari = require('tuppari');

var tuppari = new Tuppari({
  applicationId: 'YOUR APPLICATION ID',
  accessKeyId: 'YOUR ACCESS KEY ID',
  accessSecretKey: 'YOUR ACCESS SECRET KEY'
});

var channel = tuppari.join('your_channel');

channel.send('your_event', 'hello world', function (err, res, body) {
  if (err) {
    console.error(err);
  }
  console.log(res.statusCode, body);
});

ファイルを作成後、以下のコマンドで実際のイベント発行します。

cd [YOUR_WORKING_DIRECTORY]
npm install
node app.js

ブラウザのコンソールに以下の文字列が出力されていることを確認してください。

An event was triggered with message: hello world

東京Node学園 6時限目の発表資料