![Lv.10 コメットでサーバープッシュ [play framework] [java]](https://soylatte.jp/wp-content/themes/soy-magazine/assets/images/no-thumbnail.png)
記念すべき(?)レベル10です!
ドルアーガの塔を昇るがごとき苦行、、、。
早くアプリ作りたい!
取説を読む前にゲームをやるタイプです。自分。
そんな自分を戒めてplayフレームワークのドキュメント読んでまとめてます。
さて。はて。
Lv.9のストリーミングは、コメットを実装するときに有用らしい!です。
※コメットについて触れているブログ。
Re::Monologueさん。お花のヘッダーが幻想的で素敵です。
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();
}
};
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]
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();
}
};
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でした。