問題タブ [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 - UserSocket でプレゼンスを追跡する
クライアントが特定のチャネルに存在する必要なく、UserSocker
使用中のユーザーの存在を追跡しようとしています。Phoenix.Presence
後で、ユーザーの存在について通知されるように、さまざまなチャネルでユーザーの存在を購読したいと思います。
presence_diff
ユーザーが切断したときに を受け取ることを除いて、これは機能しました。私がやっていることはUserSocket
、各ユーザーの個別のトピックからプレゼンスを追跡することです:
私のチャンネルから、ユーザーの個別のプレゼンス トピックを購読しています。
transport_pid
どうにかしてソケットを監視し、ソケットが終了したときにプレゼンス diff を自分で送信する必要があるという結論に達しました。
もう 1 つのアイデアは、クライアントを関数とは別のプレゼンス チャネルに参加させることUserSocket.connect/2
でしたが、これまでのところ、それをアーカイブする方法がわかりませんでした。
問題の概要を説明するテストを使用して、単純なフェニックスアプリをハッキングしました: https://github.com/kbredemeier/socket_presence
これに関するアドバイスをいただければ幸いです。
ajax - 認証されていないユーザーに ajax の代わりに phoenix チャネルを使用することは、どれほど安全で慣用的でしょうか?
ちょっとしたコンテキストとユースケース: 認証されたユーザーがデータベースを検索して公開データを取得できるようにするこのフェニックスアプリがあります。認証されていないユーザーは、ajax 呼び出しとルートを使用してコントローラーをトリガーし、json 応答を送り返して同じ結果を得ます。
認証されていないユーザーをゲストなどとしてプライベートチャネルに接続して、ajax呼び出しを捨てることができますか? アプリでこれをどのように解決しましたか?
次のようにソケット接続を作成します。
socket = new Socket('/socket', {params: {guardian_token: app.guardian_token}})
できるとしたら、どんなことに気をつければよいでしょうか?
ありがとう