我希望逐步将遗留API应用程序移植到Phoenix。理想情况下,我会将应用程序的子域划分为单独的Phoenix应用程序,并将它们托管在不同的服务器节点上。
我希望使用凤凰频道来促进应用与应用之间的沟通。如何将一个Phoenix应用程序连接到另一个渠道和主题?例如,我想设置一个带有WebSockets的'jobs.foo.com'子域,如:
user controller
来自另一个凤凰应用程序(例如:报告)我想发布/转到该职位频道主题。是否建议在Reports中创建socket "/ws", Jobs do
channel "jobs:work_orders", WorkOrdersChannel
end
Jobs lib,并在config.exs中配置Phoenix.Endpoint
url?那么我可以使用名为pubsub端点的Jobs.Endpoint
之类的东西吗?
我不确定我的想法是否合理。如果有更明智的方法,我愿意接受建议。
- 编辑 -
只是为了澄清我想要完成的事情......我想让一个Phoenix应用程序通过WebSocket客户端连接到另一个。这将允许我拥有具有不同域逻辑的应用程序,通过频道和共同感兴趣的主题进行通信。
答案 0 :(得分:5)
我想你可能想看看Phoenix.PubSub - 只要你设法将你的节点连接到一个集群(甚至没有它,使用DB或Redis后端),你应该能够让他们谈谈相互之间。
答案 1 :(得分:4)
好的,我想出了一种在各种Phoenix应用程序中创建WebSocket客户端的方法,并允许应用程序通过远程渠道和主题进行应用程序通信。我接受了以下提示:
和
我基本上将websocket_client.exs
代码复制到我应用的../lib
目录中,然后加载并对其进行别名处理。之后我可以将一个应用程序连接到另一个应用程序的远程套接字,就像在channel_test.exs
中完成的那样。我在两台不同的机器上启动了两个独立的Phoenix应用程序,并且能够通过各个频道发送和接收消息。
不要忘记将{:websocket_client, github: "jeremyong/websocket_client"}
添加到您的mix.exs
依赖项中。