ScalaとPlayFramework2始めて数時間の人間が無謀にもWebSocketのお試しプログラム書いてみた
仕事でWebSocketのサーバ側書くことになりそうな気配がするので、PlayFramework 2.0使ってWebSocket版Echoサーバみたいなのを書いてみました。
ws://localhost:9000/?id={自分のIDを表す適当な数字}
で接続した状態で
{送信先のID}:{送信したいメッセージ}
形式でデータを送信すると、送信先IDで指定したIDで接続してる人へメッセージを送信する、みたいな感じです。
Scalaが分からなさ過ぎて死にそうでした。
コード
※ ログ出力用のコードが残ったままになってます…。
EnumeratorとIterateeの概念がさっぱりわからず、何かインプットストリームとアウトプットストリームみたいなもんだろぐらいの理解しか出来てません。
クエリで指定されたIDをキーにしたMap構造にEnumeratorを保持しておいて、接続済みのクライアントから入力があれば、該当のEnumeratorへpushする、みたいな感じでいいのかなぁ…。
メソッド直下は接続確立時のみしか通らなくて、実際にメッセージを受け取ったときはIterator.foreach[String] { ... }の中身しか実行されない模様。
コントローラのレイヤーでは
- 接続確立
- メッセージ受信
- 接続断?
のイベントで駆動して、その他の細かいイベントはクライアントとアプリケーションレベルでプロトコルを決めて制御するって感じなのかしら?
結論
よく分からん/^o^\
というかまずScalaの勉強しないと…。
- 作者: 竹添直樹,島本多可子
- 出版社/メーカー: 翔泳社
- 発売日: 2012/07/03
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 54回
- この商品を含むブログ (14件) を見る