あなたは、仲介者として機能するメッセージブローカーの風味を作りたいと思うでしょう。 Nervesベースのデバイスで実行するOTPアプリケーションは同じBEAM上で実行されるため、すべての通常のメッセージング機能とパターンを利用できます。
フェニックスチャンネルでpub-subメカニズムを使用すると、JSフロントエンドとNervesベースのデバイスで実行されているBEAMアプリケーション間のイベントを効果的にブローカブルにすることができます。この目的のために任意のOTPアプリケーションから使用できるPhoenixChannelClientのような利用可能なPhoenixチャネルクライアント実装があります。
これはあまりにも重いので、NerveアプリにGenServer
という名前をグローバルに登録して、Phoenixコントローラから直接メッセージを送信するのが簡単な方法です。
投資/複雑さのレベルの上の2つの間のどこかにあると考える価値のある第3の解決策:あなたがpub-subモデルのアイデアが気に入っていても、プロセスが内部BEAMでは、pg2を使用して、名前付きプロセスグループを使用してpub-subトピックとサブスクリプションをエミュレートできます。興味のあるサブスクライバプロセスは、グローバルに名前のついたグループに参加することができ、パブリッシャプロセスはメンバの一覧を照会してから、メッセージを送信することができます。
ありがとう、ジェフ!私はいくつかの仲介者があるべきだと思っていた。私は傘のアプリケーションの間を通るメッセージを読む必要があるようだ。 –