Sto cercando di effettuare un passaggio incrementale su un'applicazione API legacy a Phoenix. Idealmente, vorrei ritagliare i sottodomini della mia applicazione in app Phoenix separate e ospitarli su diversi nodi del server.Come connettersi a un canale app Phoenix remoto/esterno da un'altra app Phoenix?
Spero di utilizzare i canali Phoenix per facilitare la comunicazione tra app e app. Come posso collegare un'app Phoenix ai canali e agli argomenti di un altro? Ad esempio, mi piacerebbe impostare un sottodominio 'jobs.foo.com' con WebSockets come:
socket "/ws", Jobs do
channel "jobs:work_orders", WorkOrdersChannel
end
Da un altro app Phoenix (ex: Reports) Vorrei pub/sub a tale argomento canale Jobs . Sarebbe consigliabile creare una lib di lavori Phoenix.Endpoint
in Report e configurare quell'URL Jobs.Endpoint
in config.exs? Potrei quindi utilizzare qualcosa come Phoenix.PubSub.subscribe/4
con quell'endpoint pubsub denominato?
Non sono sicuro che ciò che sto pensando abbia senso. Se c'è un approccio più consigliabile, sono aperto a suggerimenti.
- EDIT -
tanto per chiarire quello che sto cercando di realizzare ... Sto volendo fare uno Phoenix app connettersi ad un altro tramite un client WebSocket. Ciò mi consentirà di avere app, con logica di dominio diversa, comunicare tramite eventi su canali e argomenti di interesse comune.
Anche qualcosa come RabbitMQ può essere un'opzione. –
@ pawel-obrok Ho guardato Phoenix.PubSub per i puntatori. Non mi è ancora chiaro come fare per rendere la mia app Reports Phoenix unirsi/iscriversi al canale app "jobs: work_orders" dell'app Jobs remoto come client. Posso connettere le mie app usando Node.connect in un cluster, ma questo accoppia le diverse aree di interesse in modo più stretto di quanto speravo. Il client JS usa 'new Socket (" SOME_LOCATION "). Connect()' per stabilire una connessione e quindi unirsi a un canale. Sto cercando una sorta di equivalente interno a Elixir/Phoenix. –
'PubSub' non è usato per iscriversi ai canali esistenti. Piuttosto si tratta di un meccanismo di comunicazione separato che ha i suoi argomenti a cui ti abboni/pubblichi. –