今週は第43回を開催しました。引き続きKotlin Hands-on編です!
前回の様子はコチラ↓
[第43回の様子]
2020/12/9に第43回を開催した。
参加メンバーは自分をいれて4名。先週の4名と同じメンツ。自分はすっかりやらなくなってしまったが、VR参加のメンバーもいて楽しいこと。
勉強会本編の内容としては、前回に引き続きCreating a WebSocket Chat with Ktorハンズオンに取り組み、3章A first echo serverを最後まで完了した。
前回とドライバーが交代して、新しいプロジェクトをIntelliJにインポートしてからの開始となった。
仮想マシンを使っていたせいか、新しいプロジェクトをインポートしたあとのビルドにかなり時間がかかってしまった。次回以降やる場合は、勉強会本編の時間確保のために、前もってドライバー担当に作業を済ませておいてもらう必要がありそう。
[学んだことや疑問点]
- Creating a WebSocket Chat with Ktor: 3. A first echo server
- 前回実装したエコーサーバーを動かしてみる
- プロジェクトのimportに時間がかかったが、エコーサーバーを起動すると下のようなログが出た。
localhost:8080
でアクセスできそう。
2020-12-09 13:50:55.650 [main] TRACE Application - { # application.conf @ file:(略)/kotlin-dojo/chat-app-websockets/server/build/resources/main/application.conf: 5 "application" : { # application.conf @ file:(略)/kotlin-dojo/chat-app-websockets/server/build/resources/main/application.conf: 6 "modules" : [ # application.conf @ file:(略)/kotlin-dojo/chat-app-websockets/server/build/resources/main/application.conf: 6 "com.jetbrains.handson.chat.server.ApplicationKt.module" ] }, # application.conf @ file:(略)/kotlin-dojo/chat-app-websockets/server/build/resources/main/application.conf: 2 "deployment" : { # application.conf @ file:(略)/kotlin-dojo/chat-app-websockets/server/build/resources/main/application.conf: 3 "port" : 8080 }, # Content hidden "security" : "***" } 2020-12-09 13:50:56.042 [main] INFO Application - No ktor.deployment.watch patterns specified, automatic reload is not active 2020-12-09 13:50:57.643 [main] INFO Application - Responding at http://0.0.0.0:8080
- 以下のサイトを利用して、ローカル端末で動作しているエコーサーバーにアクセスしてテストをするらしい。
- CORSとか影響してアクセスできないんじゃないのか?と思ったけどWebSocketはCORSの対象外だったのを思い出した
-
websocket.org Echo Test - Powered by Kaazingを利用したテストは問題なく動作した
- サーバー側でちゃんとリクエストを処理できているのか確認するために、シンプルに受け取ったテキストを出力するコードを追加した。サーバーの再起動が必要だったが、これも無事動作した。
for(frame in incoming) { frame as? Frame.Text ?: continue val receivedText = frame.readText() + println("received $receivedText") send("You said: $receivedText") }
- QuarkusでWebSocket使って実装したときはサーバー再起動不要でホットデプロイができたから楽だったなーという話をした
[まとめ]
モブプログラミング・スタイルで、Kotlin Hands-onを継続している。
引き続きWebSocket Chat with Ktorハンズオンに取り組んでいる!
Ktorのコード修正時に再起動が必要なことや、WebSocketサーバーを検証するためのクライアントツールなど、今週もたくさんのことを学べて良かった。
今週の進捗は以下のプルリクエストにまとまっている。