10

レガシー API アプリケーションを Phoenix に段階的に移植することを検討しています。理想的には、アプリケーションのサブドメインを別の Phoenix アプリに分割し、それらを別のサーバー ノードでホストします。

Phoenix チャネルを使用して、アプリ間の通信を促進したいと考えています。Phoenix アプリを別のチャンネルやトピックに接続するにはどうすればよいですか? たとえば、次のような WebSocket で「jobs.foo.com」サブドメインを設定したいと思います。

socket "/ws", Jobs do
   channel "jobs:work_orders", WorkOrdersChannel
end

別の Phoenix アプリ (例: レポート) から、その Jobs チャネル トピックに発行/サブスクライブしたいと考えています。レポートで Jobs ライブラリを作成し、config.exsPhoenix.Endpointでその URL を構成することをお勧めしますか? その名前付きの pubsub エンドポイントJobs.Endpointのようなものを利用できますか?Phoenix.PubSub.subscribe/4

私が考えていることが理にかなっているのかどうかはわかりません。もっと賢明なアプローチがあれば、私は提案を受け入れます。

- 編集 -

私が達成しようとしていることを明確にするために... WebSocketクライアントを介して1つのPhoenixアプリを別のアプリに接続したいと考えています。これにより、さまざまなドメイン ロジックを備えたアプリが、共通の関心を持つチャネルやトピックを介してイベントを介して通信できるようになります。

4

2 に答える 2

6

わかりました、さまざまな Phoenix アプリで WebSocket クライアントを作成し、リモート チャネルとトピックを介したアプリ間通信を可能にする方法を見つけました。私は次のことからヒントを得ました:

channel_test.exs

websocket_client.exs

基本的に、websocket_client.exsコードをアプリの../libディレクトリにコピーし、ロードしてエイリアスを作成しました。その後、1 つのアプリを別のアプリのリモート ソケットに接続することができましたchannel_test.exs。2 つの異なるマシンで 2 つの別々の Phoenix アプリをスピンアップし、チャネル間でメッセージを送受信できました。

依存関係に追加{:websocket_client, github: "jeremyong/websocket_client"}することを忘れないでください。mix.exs

于 2015-07-07T21:36:28.627 に答える
5

Phoenix.PubSubを調べてみるとよいと思います- ノードをクラスターに接続できている限り (またはそれがなくても、DB または Redis バックエンドを使用して)、それを介してノードを相互に通信させることができるはずです。 .

于 2015-07-06T23:26:17.553 に答える