問題タブ [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.
elixir - phoenix を使用して 1 つの socket_id にブロードキャストする方法
ドキュメントにはこの例がありますが、切断された場合にのみ機能しますhttps://hexdocs.pm/phoenix/Phoenix.Socket.html#module-examples
私はそれを試しましたが、切断に対してのみ機能します。
そのユーザーに固有のトピックを作成できる場所を読んだことがありますが、実際の例を使用できます。複雑さを理解するのに苦労しており、実用的な例を使用できます。
ありがとうございました。
ets テーブルの基になるソケットを取得できれば、そのソケットだけを取得できると考えていましたが、push/4
その方法がわかりません。
electron - phoenix-channels と electron を使用するネットワーク ツールに Websocket が表示されない
Phoenix チャネルを使用してエリクサー サーバーと通信するクライアント側の js アプリを作成しました (Node.js 14.16.0、Chromium 89.0.4389.128、および Electron 12.0.7 を使用)。すべて正常に動作します (ソケットは受信/送信されます) が、ネットワーク ツールでは何も表示されません (最初に 101 要求も WS トラフィックも取得されません..) 誰かこれを修正する考えがありますか? ありがとう ;)
elixir - Elixir Phoenix 1.6 - ブラウザにトークンを渡そうとしていますが、関数 nil.id/0 は未定義または非公開です
私は Phoenix 1.6 アプリに取り組んでいます。動作していたGitHub経由の認証にUeberauthを使用しました。認証されたユーザーができる、トピックとコメントを投稿するためのチャネルをセットアップしました。次に、チャネルで使用するユーザー トークンを追加してみました。mix phx.new.socket Userを使用して作成された定型コードの指示に従っていました。user_socket.jsファイルには、テンプレートでトークンを作成するための指示があり、機能しました。トークンは、connect関数のuser_socket.exで検証されます。トークンをconnに追加するために、router.exに新しいプラグput_user_tokenを作成しました。、これも機能しました。しかし、プラグ内のロジックに問題がありました。これは私のコードです:
これは、ログインしている限り機能します。問題は、ログアウトして再度ログインしようとしたときです。プラグ内の if ステートメントのボイラープレート コードは次のとおりです。
現在のユーザーがuserとして定義されており、値がデータベース内のユーザー レコードの ID と等しいため、私のコードは異なります。問題は、Ueberauth をセットアップするときに、 put_user_tokenプラグの前に別のプラグSetUserを作成したことだと思います。これは SetUser の呼び出し関数です。
ログアウトした後、アプリがホームページにリダイレクトされ、プラグが実行され、 conn.assigns.userの値がnilに設定されているようです。その後、エラーが発生し、再度ログインできません。
put_user_tokenプラグのifステートメントでnil値を処理できるようにする方法を考える必要があります。is_integer(conn.assigns.user)と他のいくつかの比較を試しましたが、 nilの値が存在する場合、アプリはクラッシュします。