問題タブ [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 に答える
208 参照

phoenix-framework - エリクサーでマップ内のデータにアクセスするにはどうすればよいですか

フェニックスフレームワークを使用して作成されたシンプルなチャットアプリがあります。

ソケット内のデータにアクセスしたい

これはそのために使用する方法です

すべての詳細を含む素敵なマップが表示されます。この方法を使用してすべてのルーム (トピック: "room:Testuser") を利用できるようにする最善の方法は何ですか?

これはコンソールに表示されたサンプル結果です

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

phoenix-framework - フェニックス チャネルで {:noreply, socket} と {:reply, :ok, socket} を使用するタイミングは?

Phoenix サーバーとライブ通信を行う Javascript クライアント アプリを構築しており、サーバーにプッシュされたメッセージが受信されたかどうかを知りたいと考えています。Phoenixのsocket.jsが次のようなものを使用することを望んでいるようです:

ただし、次のように、Phoenix アプリの戻り値を に変更しない限り、このイベント ハンドラーを起動することはできません{:reply, :ok, socket}

クライアントに応答して実際にメッセージを送信しないのは理にかなっていると思い{:noreply, socket}ますが、どのような場合にサーバーにメッセージを送信し、それが機能したことを知らせたくないのでしょうか? それとも私は何かを誤解していますか?通常のHTTPリクエストでは、クライアントからのリクエストが成功したかどうかを常に確認するように感じます。

0 投票する
0 に答える
215 参照

websocket - タイマー遅延なしでフェニックス チャネル クローズの Elixir モニター プロセスをテストしますか?

現在、ユーザーがチャネルに接続したときと、ユーザーがチャネルを離れたときを追跡する機能があります。これは、このスタックオーバーフローの回答 hereから実装されています。

コールバック ロジックを検証するために、次のテストを作成しました ( commit を参照)。

これを遅延なしでテストすると、モニター コールバックはトリガーされません。遅延を取り除くと、テスト アサーションが失敗し、テストの完了後に GenServer シャットダウン エラーが発生します。

テスト ケースに遅延を導入することなく、機能をきれいにテストする方法はありますか?

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

reactjs - Elixir Phoenix でチャネル メッセージを取得して React コンポーネントの状態を変更する方法は?

外部イベントに基づいてコンポーネントの状態を更新する方法を見つけようとしています。この場合、外部イベントは Elixir Phoenix チャネルを下るメッセージです。

基本的に、私は単純な h1 タグを持っており、チャンネルに入ってくる最新のものを常に反映する必要があります。したがって、相互に関連する2つの質問があります。

a) チャネルをコンポーネントに入れるにはどうすればよいですか? これまでのところ、チャネルを小道具として渡すことでそれを行ってきました。

b) コンポーネント内のチャネルに入ってくるメッセージをどのように処理しますか? 私の「this.state.chan.on」がうまくいかず、ぎこちないようです。

これを行うための受け入れられた方法は何ですか? コンポーネントの状態に影響を与えるために、反応の外部およびユーザーインターフェイスの外部で生成されたチャネルまたはソケットなどからメッセージを取得するにはどうすればよいですか? チャネルをコンポーネントに入れるのは正しいですか? それはまた、チャネルの出力をそのコンポーネントのみに影響を与えるように制限し、影響を与えたい他の独立したコンポーネントには制限していないように見えるからです。

編集: コンパイル エラー メッセージは次のとおりです。はい、JS が正しくない可能性がありますが、最初の this.state.chan.on で構文エラーが発生します。