Playで作るwebsocketサーバ

  • 2,804 views
Uploaded on

社内LT資料

社内LT資料

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,804
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
10
Comments
0
Likes
10

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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