問題タブ [phoenix-channels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1074 参照

websocket - Phoenix アプリケーションで開いているソケットとチャネル接続をカウントする

Phoenix アプリケーションで、現在開いているアクティブなソケットとチャネルの数を読み取るための、比較的簡単で文書化された方法はありますか? より具体的には、このデータをトピックやその他のチャネル接続メタデータでフィルタリングすることは可能ですか?

私のユースケースは、バックエンドへのアクティブな接続に関する分析です。

ご提案ありがとうございます。

0 投票する
1 に答える
538 参照

android - Android クライアントを使用した Phoenix チャネル

Android クライアントから Phoenix アプリへの Websocket 接続を作成しようとしています。このライブラリを使用しようとしていますが、この問題が発生しており、チャンネルに参加できません。

上記の Java phoenix クライアント ライブラリのソース コードを確認すると、ソケットに接続するためのクライアントからの最初の要求は、httpスキーマではなくスキーマで行われてwsいるようです (ソース コードは、提供された URL を明示的に変更して、常に を使用するようにしていますhttp)。Phoenix アプリで追加の構成を行わないと、これがどのように機能するかは明確ではhttp://localhost:4000/socketありません。/sockethttp

ライブラリのドキュメントには、これを機能させるために Phoenix アプリで追加の構成が必要であるとは書かれていませんが、上記の理由でどのように機能するかわかりません。

Phoenix アプリには、ここで指定されているハンドシェイクで必要な接続アップグレードなどの処理が組み込まれていますか?

注意として、javascript Web クライアントから Phoenix バックエンドへの Websocket 接続に問題はありません。

どんな提案でも大歓迎です!

0 投票する
2 に答える
266 参照

elixir - コントローラ内でプレゼンス リストを取得する方法はありますか?

フェニックスコントローラー内のプレゼンスリストを取得しようとしていますが、関数を使用するにはソケットが必要ですPresence.list(socket)

Presence.list(socket)コントローラー内での使用方法を知っている人はいますか? これを試している理由は、チャネルに接続されているユーザー (プレゼンス リスト) とは異なるユーザーをデータベースで見つけたいからです。

0 投票する
2 に答える
620 参照

elixir - Elixir/Phoenix での無効なトークンでの Websocket 接続の処理

Guardian を使用してトークンを生成し、Phoenix Channels のソケットに接続する際の認証に使用します。

最近、一部のユーザーが特定のページから離れず、約 1 か月後にトークンが無効になり、Phoenix Channels の接続試行が無効になることがわかりました。

クライアント側でそのようなケースをどのように処理しますか? フロントエンドに理由を知らせるために Phoenix から返される特定のエラーはありますか? connectの関数はuser_socket.ex次のようになります。

Phoenix Channels の Phoenix JS ライブラリを使用してこのエラーをキャプチャする方法はありますか? 私たちの目標は、1) トークンの有効期限が切れた場合に再試行を停止すること、2) ユーザーをログアウトするか、ユーザーがオフラインであるというメッセージを表示することです。Phoenix JS のドキュメントを確認しましたが、適切なものが見つかりませんでした。

0 投票する
1 に答える
62 参照

elixir - Phoenix Channel でクライアントのステータスを処理する方法

公式サイトから Phoenix Channel と Presence Documentation をたどりました。説明されているように、物事はうまく機能します。

チャンネルのドキュメントとして、クライアントが特定のトピックに参加したときに何かを処理できるように、参加コールバックがあります。しかし、存在すべきだと思うままのコールバックがないのはなぜですか?

私はいくつかをググったところ、プレゼンスを使用してクライアントのステータスを追跡できることがわかりました。どちらも機能しましたが、実際にクライアントに通知する必要はありません。Channel の handle_out コールバックで present_diff イベントをキャッチしようとすると、クライアントの数だけ複数回呼び出されました。

プレゼンスのドキュメントにあるように...

プロセスの追跡など、Phoenix.Presence によって提供される機能のサブセットのみを使用したいが、更新をブロードキャストしない場合は、phoenix_pubsub プロジェクトの Phoenix.Tracker 機能を参照することをお勧めします。

ただし、Phoenix.Tracker には最初に :pubsub_server プロパティが必要です。

ここでまた質問です。

  1. Phoenix.Channel が leave のようなコールバックを実装しない理由。
  2. 特定のトピックのクライアント ステータス (参加/退出) を処理するにはどうすればよいですか?

前もって感謝します。