Agones サイドカーでSDK Clientを使用する

Agones ロゴ

サイドカーを使った経緯

Node.jsのClient SDKを使ってみたところ、ビルドに失敗してどうしても解決できず、GoのClient SDKをサイドカーとして使うことにしました。

Websocketを使ってみたく、Socket.ioチュートリアルを進める、SDKも入れてみるとビルドが失敗する、、という状況でした。

備忘としてコードも残しておきます。https://github.com/shimon1119/chat_agones

メインコンテナ

Socket.ioのチュートリアルに少し手を加えたようなものです。

接続確率時などにイベント発生時、axiosでGoのREST APIサーバーに通信するように設定しました。

https://github.com/shimon1119/chat_agones/blob/main/sample-chat/index.ts#L22

サイドカー

GoのEchoを使って簡単にルーティングの設定します。

SDKと通信する内容もシンプルにGameServerのSTATEを変更するのみです。

https://github.com/shimon1119/chat_agones/blob/main/sdk-client/server.go

YAML

healthに関してうまく理解できていなかったので、disabled: trueに設定して無効にしています。

これをdisabled: false (デフォルト)に設定すると、GameServerがUnhealthyとなってしまいます。

サイドカーとの通信について

同じPodで複数のコンテナが存在する場合でも、コンテナから見るlocalhostは共通です。

フロントのWebアプリから、localhost/xxxxを叩くだけで良いため、特別な設定はしていません。

実行方法

上述のgitをcloneして、各ソースをビルドして実行いただければと思います。

simple-gameserverをずっと参考にさせてもらっていました。

goに慣れていない自分だと、読むのが難しかったりしましたが、少なくともSTATEを触るだけなら、関数を実行するだけと簡単に使えるようにしてもらっていて助かりました。非同期処理に慣れるのも今後の自分の課題です。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


この投稿へのトラックバック

トラックバックはありません。

トラックバック URL