Diarkis サーバが停止するときの挙動

Diarkis サーバは停止(SIGTERM を受けた状態)する指示を受けるとサーバ停止のための処理を実行し停止モードに切り替ります。

サーバのステータスが自動で切り替わる

Diarkis サーバは 停止する指示を受けると自身のステータスを「OFFLINE」に切り替えます。

OFFLINE 状態になった Diarkis サーバは Auth (Diarkis HTTP サーバからリアルタイム通信を開始するための入り口 API)で返される対象から除外されるため、新規のクライアントを受け付けなくなります。

新規のクライアントを受け付けなくなるだけでなく、新規のルーム、グループの作成もできなくなります。

ただし、すでに接続通信をしているクライアントはそのまま通信を継続することができます。このため、サービスに影響を及ぼすことはありません。

通信しているクライアントにサーバから通知をする

サーバが OFFLINE 状態になると接続通信しているクライアントでは「OnOffline」というイベントが発火します。これは現在繋がっているサーバ停止する準備に入ったことを示します。クライアントはアプリケーションの仕様に準じて可能な限り Diarkis サーバとの接続を再接続するようにお勧めします。

サーバはクライアントを待つ

Diarkis UDP, TCP, WebSocket サーバでは、OFFLINE 状態になると接続通信しているクライアントが全ていなくなりまで、サーバの停止をサスペンドします。停止を待たせることによってサーバの停止によるクライアントへの通信障害を防ぎます。

ただし、このサスペンドにはタイムアウトがあるため、タイムアウトを超過してしまうをクライアントがいなくなる前にサーバは停止します。このタイムアウトの値は DIARKIS_SHUTDOWN_TIMEOUT の環境変数の値を設定することで調整が可能です。値は秒。デフォルトの値は 10 秒です。