読者です 読者をやめる 読者になる 読者になる

milkcocoaを使ってみた

milkcocoa TypeScript Advent Calendar 2014

この記事はmilkcocoa Advent Calendar 2014の13日目の記事です。

簡単にリアルタイム通信できると聞いて興味が湧いたので思わず参加しました。

とりあえず、作成したもの=>GO!

みんなに紹介したいこと

1つDataStoreを使用して異なるコマンドを送受信してみたので
その対応方法を書いてみたいと思います
※以下ソースコードはTypeScriptを使用しています。

それでは、説明していきましょう~

1.異なるコマンドを分岐するために列挙を定義する

enum Command {
  Born,   // 生まれる(キャラ作成)
  Alive,  // 生存しているアピール
  Move,   // 移動(クリックした座標を送信)
}

2.送信用パッケージ定義する

class Package {
  // cmd : パッケージコマンド
  // data : 追加データ(コマンド毎に異なる)
  constructor(public cmd: Command, public data: any) { }
}

3.送信ヘルパー関数

実行したいコマンド+必要なデータを1つオブジェクトにして送信しています

var ds = milkcocoa.dataStore("message");
function send(command: Command, data: any) {
  ds.send(new Package(command,data));
}

4.受信部

何か受信したら、data.valueから送信したオブジェクトを取得できます

var ds = milkcocoa.dataStore("message");
ds.on("send", (data:any)=>{
  var p = <Package>data.value; // オブジェクトをPackageにキャスト
  switch (p.cmd) {
    case Command.Born:
    // MEMO:誰か生まれた
    break;
    case Command.Alive:
    // MEMO:誰か生存しているアピールした
    break;
    case Command.Move:
    // MEMO:誰か移動した
    break;
  }
});

使用例:移動先の座標を送信する場合

send(Command.Move,{x:10,y:20});

最後に

書き終わって振り返ってみたら、

milkcocoa成分が少なすぎる、本当にいいのか・・

と思っちゃいます、これもmilkcocoaの強みと言えるでしょう。

駆け足ですが以上で終わります。ではでは~

おまけ

サンプルのソースコード=> DL
Visual Studio Community 2013で動作確認

milkcocoaのTypeScript用型定義ファイル=> GitHub

必要な方どうぞ~