2017-01-09 5 views
2

私は非常に簡単なチャットアプリケーションを持っており、ユーザーがページを終了するときに(つまり、terminate/2接続)、いくつかの特定のアクションを実装したいと思います。しかし、このトピックに他の誰も接続していない場合は、このアクションを実装したいと思います。フェニックスのチャンネルへの接続量をどのように知ることができますか?

どうすればいいですか?

+1

で話題を残した場合、私は本当にそれに見ていない自分自身を確認することができ、私は[Phoenix Presence](https://hexdocs.pm/phoenix/Phoenix.Presence.html) –

+0

ジャスティンを使って、指定されたチャンネルに接続されている人の数を追跡できることを知っています。ありがとう! – asiniy

答えて

6

これは些細な問題のように聞こえるかもしれませんが、そうではありません。接続の問題などを処理する必要があります。幸いにも、これは一般的な問題です。フェニックスに付属している標準的な解決策があります - Phoenix.Presence。これにより、特定のトピックのオンラインユーザーを確実に追跡できます。

プレゼンスを設定するには、ここの手順に従ってください:https://hexdocs.pm/phoenix/Phoenix.Presence.html

は、その後、あなたのterminate/2コールバックで、あなたはすべてのユーザーが

if Presence.list(socket) |> Enum.empty? do 
    # do something 
end 
+0

私の 'do something'も非同期であれば、特に難しいです:)ありがとう! – asiniy

関連する問題