会社でKotlin dojo(第43回)を開催した

今週は第43回を開催しました。引き続きKotlin Hands-on編です!

 

前回の様子はコチラ↓

kdnakt.hatenablog.com

 

 

[第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
    • 以下のサイトを利用して、ローカル端末で動作しているエコーサーバーにアクセスしてテストをするらしい。

www.websocket.org

    • CORSとか影響してアクセスできないんじゃないのか?と思ったけどWebSocketはCORSの対象外だったのを思い出した

blog.securityevaluators.com

    • 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")
}

 

[まとめ]

モブプログラミング・スタイルで、Kotlin Hands-onを継続している。

引き続きWebSocket Chat with Ktorハンズオンに取り組んでいる!

Ktorのコード修正時に再起動が必要なことや、WebSocketサーバーを検証するためのクライアントツールなど、今週もたくさんのことを学べて良かった。

 

今週の進捗は以下のプルリクエストにまとまっている。

github.com