Elixir 如何从其他Phoenix应用程序连接到远程/外部Phoenix应用程序频道?

Elixir 如何从其他Phoenix应用程序连接到远程/外部Phoenix应用程序频道?,elixir,phoenix-framework,Elixir,Phoenix Framework,我希望通过一个遗留API应用程序增量移植到Phoenix。理想情况下,我会将应用程序的子域划分为单独的Phoenix应用程序,并将它们托管在不同的服务器节点上 我希望使用凤凰频道来促进应用程序之间的交流。如何将一个Phoenix应用程序连接到另一个Phoenix应用程序的频道和主题?例如,我想用WebSocket设置一个“jobs.foo.com”子域,如: socket "/ws", Jobs do channel "jobs:work_orders", WorkOrdersChanne

我希望通过一个遗留API应用程序增量移植到Phoenix。理想情况下,我会将应用程序的子域划分为单独的Phoenix应用程序,并将它们托管在不同的服务器节点上

我希望使用凤凰频道来促进应用程序之间的交流。如何将一个Phoenix应用程序连接到另一个Phoenix应用程序的频道和主题?例如,我想用WebSocket设置一个“jobs.foo.com”子域,如:

socket "/ws", Jobs do
   channel "jobs:work_orders", WorkOrdersChannel
end
从另一个Phoenix应用程序(例如:Reports)中,我想发布/订阅该乔布斯频道的主题。是否建议在报告中创建一个
Phoenix.Endpoint
Jobs库,并在config.exs中配置该
Jobs.Endpoint
url?然后我可以使用类似于
Phoenix.PubSub.subscribe/4
的东西来命名PubSub端点吗

我不确定我的想法是否有道理。如果有更明智的办法,我愿意接受建议

--编辑--


我只是想澄清一下我想要实现的目标。。。我想让一个Phoenix应用程序通过WebSocket客户端连接到另一个。这将使我能够让具有不同域逻辑的应用程序通过共同感兴趣的频道和主题上的事件进行通信。

我认为您可能需要研究-只要您能够将节点连接到集群中(或者即使没有,使用DB或Redis后端)你应该能够让他们通过这个对话。

好的,我想出了一种方法,在我的各种Phoenix应用程序中创建WebSocket客户端,并允许应用程序通过远程频道和主题进行通信。我的线索来自:

我基本上是将
websocket\u client.exs
代码复制到我的应用程序的
./lib
目录中,然后加载并别名它。之后,我可以将一个应用程序连接到另一个应用程序的远程套接字,就像在
channel\u test.exs
中一样。我在两台不同的机器上开发了两个独立的Phoenix应用程序,能够通过频道发送和接收消息


不要忘了将
{:websocket\u client,github:“jeremyong/websocket\u client”}
添加到您的
mix.exs
依赖项中。

类似RabbitMQ的东西也可以作为一个选项。@pawel obrok我已经在Phoenix.PubSub中查看了指针。我仍然不清楚如何让我的Reports Phoenix应用程序作为客户端加入/订阅远程作业应用程序“作业:工作订单”频道。我可以在集群中使用Node.connect连接我的应用程序,但这比我希望的更紧密地结合了不同的关注领域。JS客户端使用
新套接字(“某些位置”).connect()
建立连接,然后加入通道。我正在寻找某种与Elixir/Phoenix相当的内部版本。
PubSub
不用于订阅现有频道。相反,它是一种独立的通信机制,有自己的主题供您订阅/发布。