SetOnJoinCompleteByID が実行されるサーバ

新しいユーザーがルームに参加したときに呼び出されるコールバックを割り当てることができます。このコールバックは、ルームのサーバと新しいユーザーがいたサーバに応じて、異なるサーバーで呼び出される場合があります。

Diarkis Roomでは、ユーザーがどこにいてもルームに参加することができます(ユーザーは同じDiarkis クラスタにいる必要があります)。

つまり、ユーザーがルームのないサーバーに接続している場合、Diarkisルームは自動的にルームのある正しいサーバーにユーザーをリダイレクトします。

ルームには多くのコールバックがありますが、この記事では SetOnJoinCompleteByID について説明します。

SetOnJoinCompleteByID は、ユーザーがルームに正常に参加したときに呼び出されますが、ユーザーが他のサーバーからリダイレクトされた場合は、ユーザーが正しいサーバーに再接続すると、ルームへの参加操作が完了し、そのタイミングで SetOnJoinCompleteByID が呼び出されます 。

このコールバックは、ルームが存在するサーバー上で呼び出されます。

room.SetOnJoinCompleteByID(roomID, func(joinRoomID string, newMember *user.User))

2つのサーバーにまたがるルームジョインの場合

以下の図は、ユーザーがルームがあるサーバーに再接続され、SetOnJoinCompleteByID コールバックが呼び出される様子を示しています。

単一サーバーでのルーム参加の場合

下図は、ユーザーと同じサーバーに存在する部屋に参加する際の流れを示しています。

この場合、ユーザーは別のサーバーに再接続せず、同じサーバー上で SetOnJoinCompleteByID が呼び出されます。