This package integrates Absinthe subscriptions with Phoenix, so that you can use subscriptions via websockets.
For getting started guides on subscriptions see: https://hexdocs.pm/absinthe/subscriptions.html
For getting started guides on server side rendering see: https://hexdocs.pm/absinthe/subscriptions.html
Install from Hex.pm:
def deps do
[{:absinthe_phoenix, "~> 1.4.0"}]
end
You need to have a working phoenix pubsub configured. Here is what the default looks like if you create a new phoenix project:
config :my_app, MyAppWeb.Endpoint,
# ... other config
pubsub: [name: MyApp.PubSub,
adapter: Phoenix.PubSub.PG2]
In your application supervisor add a line AFTER your existing endpoint supervision line:
[
# other children ...
supervisor(MyAppWeb.Endpoint, []), # this line should already exist
supervisor(Absinthe.Subscription, [MyAppWeb.Endpoint]), # add this line
# other children ...
]
Where MyAppWeb.Endpoint
is the name of your application's phoenix endpoint.
In your MyApp.Web.Endpoint
module add:
use Absinthe.Phoenix.Endpoint
In your socket add:
use Absinthe.Phoenix.Socket,
schema: MyAppWeb.Schema
use Absinthe.Phoenix.Socket
def connect(_params, socket) do
socket = Absinthe.Phoenix.Socket.put_schema(socket, MyAppWeb.Schema)
{:ok, socket}
end
Where MyAppWeb.Schema
is the name of your Absinthe schema module.
That is all that's required for setup on the server.
For client side guidance see the guides
From within GraphiQL: To use Absinthe.Phoenix from within GraphiQL, you need to tell GraphiQL about your websocket endpoint.
forward "/graphiql", Absinthe.Plug.GraphiQL,
schema: MyAppWeb.Schema,
socket: MyAppWeb.UserSocket
See LICENSE.md.