Contenu connexe
Similaire à Playで作るwebsocketサーバ
Similaire à Playで作るwebsocketサーバ (20)
Plus de ke-m kamekoopa (9)
Playで作るwebsocketサーバ
- 9. Not Only Node.Js
という訳で今回のLTは
Javaで
Playframeworkで
かんたんWebsocketサーバ
をお送りします
(土下座る必要はありません)
- 12. Playframework
Playだと何がうれしいの?
Java/ScalaのFWなので既存資産がいっぱい
Controllerの書き方をちょっと変えるだけで簡
単にWebSocket対応Controllerに変身
Playのルーティングルールの上で動く
RESTなエンドポイントと同居したり
複数のWebsocketエンドポイント作ったり
URLからパラメータ取ったり
- 18. HOW TO
手順は2つ
routesファイルにルーティング設定書く
ControllerをWebSocketオブジェクトを返すよ
うに書く
以上
- 19. HOW TO
routes
普通のRESTエンドポイントと一緒
例えばクエリパラメータを取りたければ、こう
GET /ws controllers.Application.ws(id:Int)
- 20. HOW TO
controller
通常のcontroller
public static Result ws(int id){…}
これを
public static WebSocket<A> ws(int id){…}
こう書き換える。
- 21. HOW TO
controller
型パラメータ<A>はクライアントとやり取りす
るメッセージの型を指定する。
文字列とかJsonとか指定できる。
戻りの型のWebSocketクラスは抽象クラス
クライアントからの入力を表すIn<A>
クライアントへの出力を表すOut<A>
を引数にとるonReady(in, out)を実装する
- 23. HOW TO
controller
クライアントからメッセージを受け取った時の処理は、
In<A>にコールバックとして設定する
クライアントにメッセージを送信したい時は、Out<A>
のwriteメソッドで送信できる
特定のクライアントだけにメッセージを送信したいみ
たいな場合は?
なんかしら(IDとか)をキーにして、Out<A>をMapみたいなも
のに入れておきましょう
json使って、アプリレベルでのプロトコルを設計する必要があ
ります。
- 30. Conclusion
Node.jsだけじゃないんだよ
Playframeworkという選択肢
パフォーマンスもNodeに劣らない
Java/Scalaで書ける安心感
静的型付き言語
Javaの既存資産が有効活用できるよ
Playなら
開発初動がほんと早い
今回のサンプルはLT資料書きながらでも
プロジェクト作成から始めて数分で出来た。
Websocket専用の流儀とかがあんまりない
controllerでWebSocket<A>抽象クラス実装して返すだけ