Forgive the pedantic nature of this response, I’m going to try and be very precise in my use of terminology.
Absinthe accepts GraphQL documents -
subscription documents - and helps you generate the result of those queries through an Elixir API. It is agnostic about how the document makes it to that API. For
subscription documents, where results of the query can be generated asynchronously and/or over time,
Absinthe requires a PubSub system and will deliver those results to that system.
The aspects of providing GraphQL documents to
Absinthe over the network is handled by software that is outside of
Absinthe proper. One popular choice is
absinthe_plug which helps to create a Plug pipeline for submitting GraphQL documents to
absinthe_plug supports HTTP GET and POST requests. It can also be used to set up an HTTP endpoint that delivers a GraphiQL interface.
To my knowledge
absinthe_plug doesn’t do much to help you get the long running results of
subscription documents. If you just want to use
absinthe_plug your application will still have to provide a compatible PubSub system and find some way to deliver the results of the subscription as they are published by
absinthe_phoenix is a network delivery toolkit for handling GraphQL queries through Phoenix Channels. Those channels, in turn, are currently built on top of web sockets or long polling. Because Phoenix itself includes a PubSub system,
absinthe_phoenix can make use of that system to deliver the asynchronous results of
subscriptions through a Phoenix Channel (in addition to the synchronous results of