私は自分のチャンネルクラスでGenServerを呼び出しています。 GenServerにはpidが必要です。そのpidを永続化することで、GenServer内のjoinメソッドが呼び出されるたびに、同じpidでGenServerを呼び出すことができます。私はソケットのパラメータでそれを保存する必要がありますか、私はチャネルとフロントエンドのjavascriptの間で前後に渡す必要がありますか?チャネルでGenServerを使用しています。どのようにpidを維持するには?
0
A
答えて
1
私は最近、GenServersを扱うときにpidの代わりに名前を使用することを選択しました。あなたはGenServer.start_link/3
にname
パラメータを渡し、その後、例えばGenServer.cast/2
私の場合は、例えば、サーバの名前(生成するチャンネルに送られた固有のIDを使用しています(他の呼び出しでそれを使用することができます。。:"document-1"
)を
最大の欠点をBEAMには原子数に制限があるため、生成される名前の数が大きすぎるとクラッシュする可能性があるので、このソリューションを実装するときに考える必要があります。
0
私が得た方法クライアントがブラウザをリフレッシュすると、ソケットのpidが変更される可能性があるため、これを回避するにはsocket.topic
をGenServerプロセスに渡します。
GenServerから、MyApp.Endpoint.broadcast! socket_topic, "some_notification", message
でトピックにブロードキャストできます。 チャネル内のメッセージを傍受して、クライアントに直接送信するか、クライアントに直接送信することができます。
0
私が正しく覚えていれば、フェニックスチャンネル内で作成されたgenserverプロセスはチャンネルプロセスにリンクされています。したがって、genserverプロセスとチャネルとのリンクを解除することができます。そして同じpidが残るようにプロセスの名前を登録します。
関連する問題
- 1. エリクサーテストgenserver - 親PIDを渡す
- 2. Nettyチャネルに状態を維持する
- 3. 今後の使用のためにGenServerのpidを保存する
- 4. パラメータを使用してcmdのバッチでpidを取得するにはどうすればよいですか?
- 5. ノックアウトはどのように状態を維持していますか?
- 6. lumenブロードキャストを使用してredisチャネルにメッセージを公開するにはどうすればよいですか?
- 7. adbシェルを使用してAndroidアプリケーションのpidを取得するにはどうすればよいですか?
- 8. どのようにスクロールの速度を維持するには?
- 9. どのようにスクロールの速度を維持するには?
- 10. Javaを使用してchromeriverプロセスPIDを取得するにはどうすればよいですか?
- 11. unificationengineを使用してwebsocketとsubscribeチャネルを接続するにはどうすればよいですか?
- 12. チャネルを使用して外部キーIDを挿入するにはどうすればよいですか?
- 13. WebservicesでStateをどのように維持できますか?
- 14. ルーパはどのようにしてスレッドを維持し続けますか?
- 15. コミュニティの変更履歴をどのように維持していますか?
- 16. tomcatセッションをどのように維持しますか?
- 17. 複雑なJavaScriptプロジェクトをどのように維持していますか?
- 18. VB.NETを使用してSQL Serverデータベースの合計をどのように維持できますか?
- 19. UIScrollViewを使用すると、ズームアウト時にどのようにコンテンツビューを中央に維持できますか?
- 20. SweetAlert2をAngularで使用する場合、どのようにスコープを維持しますか?
- 21. チャネルを使用している間、ネットワーク内の起源を維持する方法
- 22. どのようにキャッシュキーを整理して維持し、フラッシュしますか?
- 23. オブジェクトのグローバルキャッシュをどのように維持できますか? (またはコンテンツを保持しないNSMutableSet)
- 24. Processingで再利用可能なオブジェクトを維持するにはどうすればよいでしょうか?
- 25. jQuery "clone()"を使用した後、新しい要素にjQueryバインドを維持(または再適用)するにはどうすればよいですか?
- 26. logstashはどのような状態を維持しますか?
- 27. td内のテキストを回転して中央に維持するにはどうすればよいですか?
- 28. 添加剤ブレンドを使用していても、バックグラウンドに対して同じ色を維持するにはどうすればよいですか?
- 29. Googleスプレッドシートで連結を使用しているときにセル間で色/テキストの書式を維持するにはどうすればよいですか?
- 30. Foreverを使用する。子プロセスのPIDを調べるにはどうすればよいですか?