私は非常に簡単なチャットアプリケーションを持っており、ユーザーがページを終了するときに(つまり、terminate/2
接続)、いくつかの特定のアクションを実装したいと思います。しかし、このトピックに他の誰も接続していない場合は、このアクションを実装したいと思います。フェニックスのチャンネルへの接続量をどのように知ることができますか?
どうすればいいですか?
私は非常に簡単なチャットアプリケーションを持っており、ユーザーがページを終了するときに(つまり、terminate/2
接続)、いくつかの特定のアクションを実装したいと思います。しかし、このトピックに他の誰も接続していない場合は、このアクションを実装したいと思います。フェニックスのチャンネルへの接続量をどのように知ることができますか?
どうすればいいですか?
これは些細な問題のように聞こえるかもしれませんが、そうではありません。接続の問題などを処理する必要があります。幸いにも、これは一般的な問題です。フェニックスに付属している標準的な解決策があります - Phoenix.Presence
。これにより、特定のトピックのオンラインユーザーを確実に追跡できます。
プレゼンスを設定するには、ここの手順に従ってください:https://hexdocs.pm/phoenix/Phoenix.Presence.html
は、その後、あなたのterminate/2
コールバックで、あなたはすべてのユーザーが
if Presence.list(socket) |> Enum.empty? do
# do something
end
私の 'do something'も非同期であれば、特に難しいです:)ありがとう! – asiniy
で話題を残した場合、私は本当にそれに見ていない自分自身を確認することができ、私は[Phoenix Presence](https://hexdocs.pm/phoenix/Phoenix.Presence.html) –
ジャスティンを使って、指定されたチャンネルに接続されている人の数を追跡できることを知っています。ありがとう! – asiniy