10

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

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

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

从另一个 Phoenix 应用程序(例如:报告)我想发布/订阅到该工作频道主题。是否建议Phoenix.Endpoint在 Reports 中创建一个 Jobs 库并Jobs.Endpoint在 config.exs 中配置该 url?然后我可以使用Phoenix.PubSub.subscribe/4与那个命名的 pubsub 端点类似的东西吗?

我不确定我的想法是否有意义。如果有更可取的方法,我愿意接受建议。

- 编辑 -

只是为了澄清我要完成的工作......我想让一个 Phoenix 应用程序通过 WebSocket 客户端连接到另一个应用程序。这将允许我拥有具有不同领域逻辑的应用程序,通过事件通过渠道和共同感兴趣的主题进行通信。

4

2 回答 2

6

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

channel_test.exs

websocket_client.exs

我基本上将websocket_client.exs代码复制到我的应用程序../lib目录中,然后加载并为其添加别名。之后,我可以将一个应用程序连接到另一个应用程序的远程套接字,就像在channel_test.exs. 我在两台不同的机器上启动了两个独立的 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 回答