基本的な方針
google app engine 上でwebsocketを使ってなんか作りたい。
node.jsがないので、ここを参考に
http://d.hatena.ne.jp/drillbits/20101218/serverside_javascript_on_appengine
JAVAで動くRongoJSを使ってみよう
チャットじゃ面白くないので、そのページにアクセスしてる人のマウスカーソルが他の人にも見える仕組みを作ろう。
それも、マウスカーソルの位置を直に表示するのもつまらんので、なんかグリッドレイアウトのページにして、カーソルが多くあるグリッドほど赤く表示されるヒートマップみたいな感じにしよう
追記
どうやらgae上で動かすと、非同期通信とかwebsokectとかできないっぽい。
事前準備
Eclipseでつくるので、eclipseを用意して、google app engine javaアプリが作れる環境を整えとく。google pluginとかをいれておくこと。
私はmac os xで作ることにする。
RingioJSの導入
RingoJS公式から落とす
http://ringojs.org/
バージョンは0.10。
ユーザディレクトリ直下にいれてみた。
シェルを立ち上げてみる
ここを参考に
http://d.hatena.ne.jp/syttru/20101018/1287421720
bin/ringoを実行しようと思ったら Permission deniedと言われたので、実行権限をつけて、その後立ち上げ。
$ chmod +x bin/ringo $ bin ringo >> print("a") a
動いた!
ついでに、ついてきたwebサーバのサンプルを動かしてみよう
$ bin/ringo examples/httpserver.js 0 [main] INFO ringo.httpserver - Set app module: /Users/aoyagisaizo/ringojs-0.10/examples/httpserver 302 [main] INFO org.eclipse.jetty.server.Server - jetty-7.5.4.v20111024 367 [main] INFO org.eclipse.jetty.server.handler.ContextHandler - started o.e.j.s.ServletContextHandler{/,null} 377 [main] INFO org.eclipse.jetty.server.AbstractConnector - Started SelectChannelConnector@0.0.0.0:8080 STARTING 396 [main] INFO ringo.httpserver - Server on http://localhost:8080 started.
http://localhost:8080にアクセスすると、hello worldって表示された。
よしよし。
参考までに公式チュートリアル。
http://ringojs.org/tutorial/
これはやってない。
GAEアプリに組み込む
datastore
ここまで来て気づいたが、datastoreにアクセスできるんだろうか?
cloud strageは行けそうな気がするけど。
このアプリにはdatasoteはいらんけど、一応テストしなきゃ行けない事情がある。
http://blog.vier.jp/2013/06/33google-cloud-datastore-13.html
これをみると、web api経由でいけるらしい。でも遅いのかなあ。
https://developers.google.com/datastore/
公式を見て試しに何かやってみる。
ちょっとこれは長くなりそうなので、別記事にしよう。
http://uozias.hatenablog.com/entry/2014/03/29/Google_app_engine%E4%B8%8A%E3%81%AERingoJS%E3%81%8B%E3%82%89datastore%E3%81%AB%E3%81%A4%E3%81%AA%E3%81%92%E3%82%8B
ringoのwebアプリひな形を作る。
こっちを参考に
http://d.hatena.ne.jp/syttru/20101019/1287506676
$ chmod +x bin/ringo-admin $ bin/ringo-admin create ringoJSTest Creating Ringo web application in ringoJSTest + Copying /Users/XXXXXX/ringojs-0.10/tools/admin/skeletons/app to ringoJSTest ... done
何かができた。
できたフォルダの中のredmeを見ると、できたフォルダ内のmain.jsを立ち上げれば、webアプリが起動するらしい。やってみよう。
$ bin/ringo ringoJSTest/main.js 0 [main] INFO ringo.httpserver - Set app module: /Users/aoyagisaizo/ringojs-0.10/ringoJSTest/main 307 [main] INFO org.eclipse.jetty.server.Server - jetty-7.5.4.v20111024 369 [main] INFO org.eclipse.jetty.server.handler.ContextHandler - started o.e.j.s.ServletContextHandler{/,null} 380 [main] INFO org.eclipse.jetty.server.AbstractConnector - Started SelectChannelConnector@0.0.0.0:8080 STARTING 404 [main] INFO ringo.httpserver - Server on http://localhost:8080 started.
http://localhost:8080にアクセスすると、こんな画面がでた。
gaeプロジェクトに放り込む
あらかじめ、eclipseでNew web application projectを選んで、gaeアプリを作っておく。
こいつに入れるには、ringojs自体も入ってないといけないんじゃないか?
どうしたらいいのか
http://kjunichi.cocolog-nifty.com/misc/2013/04/ringojsgoogle-a.html
ここをみてやってみる。
$ bin/ringo-admin create --google-appengine ../ringoJSTest
こんどは、WEB-INFディレクトリができたから、これをgaeアプリの中に突っ込んでみる。
web-xmlを眺めてみると、このアプリはどこにアクセスしてもringojs用のサーブレットが立ち上がるようになってるらしい。
ローカルで立ち上げてみる。
こんなのでた。
gae上にデプロイしてみる。
ちゃんと動いた。
実際のアプリ作りは次の投稿から。
- 作者: Dan Sanderson,玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/01/24
- メディア: 大型本
- 購入: 5人 クリック: 414回
- この商品を含むブログ (27件) を見る
- 作者: (株)グルージェント
- 出版社/メーカー: 技術評論社
- 発売日: 2009/09/10
- メディア: 単行本(ソフトカバー)
- 購入: 65人 クリック: 2,041回
- この商品を含むブログ (45件) を見る