Lv.10 コメットでサーバープッシュ [play framework] [java]

記念すべき(?)レベル10です!
ドルアーガの塔を昇るがごとき苦行、、、。
早くアプリ作りたい!
取説を読む前にゲームをやるタイプです。自分。
そんな自分を戒めてplayフレームワークのドキュメント読んでまとめてます。

さて。はて。

Lv.9のストリーミングは、コメットを実装するときに有用らしい!です。

※コメットについて触れているブログ。
Re::Monologueさん。お花のヘッダーが幻想的で素敵です。

コメットとは、サーバーからのプッシュ送信を疑似的に実装するテクニックの名称、
であってると思う、、、。※

かつ、playフレームワークにはplay.libs.Cometなるコメットのヘルパー※があるらしく、
とても簡単に使えるようだ!

目次

コメットの使い方

※公式にはreturnがついてなかった。scalaっぽく書いてるんだと思うけど、javaで統一させてる。
[java toolbar=”false”]public static Result index() {
Comet comet = new Comet(“console.log”) {
public void onConnected() {
sendMessage(“kiki”);
sendMessage(“foo”);
sendMessage(“bar”);
close();
}
};

return ok(comet);
}[/java]

動いた!簡単すぎる!

これを分解すると、実質は下記のようなコードを送っていることになるらしい。

[java toolbar=”false”]out.write(““);
out.write(““);
out.write(““);

response().setContentType(“text/html”);[/java]

ふむふむ。単純でいいな。

コメット実装での常套手段

が、iframeらしいです。へー。
iframeのsrcにてコメットが実行されるURL叩いて、コメットにて親画面のJSを呼ぶように
するのだとか。

公式ドキュメント通りにやってみた。

[java toolbar=”false”]public static Result index() {
Comet comet = new Comet(“parent.cometMessage”) {
public void onConnected() {
sendMessage(“あいう”);
sendMessage(“え”);
sendMessage(“お”);
close();
}
};

return ok(comet);//※
}[/java]

して、久しぶりにviewを触ってあげる。

[java toolbar=”false”]

[/java]

といってもこの記述を加えただけ。

これで動く。さくっと。
あ、もちろんconf/routesにも、

[java toolbar=”false”]GET /comet controllers.Application.comet()[/java]

こんな感じの定義を追加してあげる。
コメット便利だなー。
無意味に使いたい。

アセスメント

  • コメットのヘルパークラスがあるということを知っている
  • コメット実装の常套手段が分かる

今回の公式ドキュメント探訪は、Comet socketでした。