Playで作るwebsocketサーバ

4,442 views

Published on

社内LT資料

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,442
On SlideShare
0
From Embeds
0
Number of Embeds
229
Actions
Shares
0
Downloads
14
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Playで作るwebsocketサーバ

  1. 1. Node.jsだけじゃないPlayで作るWebsocketサーバ
  2. 2. 磯○~!Websocketサーバー作ろうぜ~~!
  3. 3. 中○!じゃあ早速Node.jsをインストーr
  4. 4. まったく磯○は短絡的なんだから~Node以外でもWebsocketサーバは作れるんだぜ?
  5. 5. …ほ、本当かよ中○!正直ボクはJavascriptが苦手なんだ!早くその方法を教えてくれよ!
  6. 6. 土下座(げざ)れ。
  7. 7. ………。
  8. 8. Not Only Node.Js という訳で今回のLTは  Javaで  Playframeworkで  かんたんWebsocketサーバ をお送りします (土下座る必要はありません)
  9. 9. New generation framework for Java and Scala Playframework
  10. 10. Playframework みんな知ってる新世代Web FW 最近世間的にもアツさが高まってきた。 JavaとScalaで使える 僕はJavaしか使えない(キリッ WebSocketにも対応!
  11. 11. Playframework Playだと何がうれしいの?  Java/ScalaのFWなので既存資産がいっぱい  Controllerの書き方をちょっと変えるだけで簡 単にWebSocket対応Controllerに変身  Playのルーティングルールの上で動く  RESTなエンドポイントと同居したり  複数のWebsocketエンドポイント作ったり  URLからパラメータ取ったり
  12. 12. I want to say “Hello World” HOW TO
  13. 13. ゴタクはいいから早く作って見せてくれよ、中○!
  14. 14. まったく磯○はせっかちだなぁ~焦らなくても今教えてやるよ~
  15. 15. …た…頼むよ…。
  16. 16. HOW TO 手順は2つ  routesファイルにルーティング設定書く  ControllerをWebSocketオブジェクトを返すよ うに書く  以上
  17. 17. HOW TO routes  普通のRESTエンドポイントと一緒  例えばクエリパラメータを取りたければ、こう  GET /ws controllers.Application.ws(id:Int)
  18. 18. HOW TO controller  通常のcontroller  public static Result ws(int id){…}  これを  public static WebSocket<A> ws(int id){…}  こう書き換える。
  19. 19. HOW TO controller  型パラメータ<A>はクライアントとやり取りす るメッセージの型を指定する。  文字列とかJsonとか指定できる。  戻りの型のWebSocketクラスは抽象クラス  クライアントからの入力を表すIn<A>  クライアントへの出力を表すOut<A>  を引数にとるonReady(in, out)を実装する
  20. 20. HOW TO controller  こんな感じ
  21. 21. HOW TO controller  クライアントからメッセージを受け取った時の処理は、 In<A>にコールバックとして設定する  クライアントにメッセージを送信したい時は、Out<A> のwriteメソッドで送信できる  特定のクライアントだけにメッセージを送信したいみ たいな場合は?  なんかしら(IDとか)をキーにして、Out<A>をMapみたいなも のに入れておきましょう  json使って、アプリレベルでのプロトコルを設計する必要があ ります。
  22. 22. HOW TO こんな感じ
  23. 23. 見づらいぞ、中
  24. 24. Gistに貼っておいてやったぞ、磯○!https://gist.github.com/kamekoopa/5268800
  25. 25. (反応がない。ただの屍のようだ。)
  26. 26. The thing you should see is only here Conclusion
  27. 27. Conclusion Node.jsだけじゃないんだよ  Playframeworkという選択肢  パフォーマンスもNodeに劣らない Java/Scalaで書ける安心感  静的型付き言語  Javaの既存資産が有効活用できるよ Playなら  開発初動がほんと早い  今回のサンプルはLT資料書きながらでも プロジェクト作成から始めて数分で出来た。  Websocket専用の流儀とかがあんまりない  controllerでWebSocket<A>抽象クラス実装して返すだけ
  28. 28. おわり

×