View Source Absinthe.Phoenix
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
Installation
Install from Hex.pm:
For Phoenix 1.4, see the v1.5 branch: https://github.com/absinthe-graphql/absinthe_phoenix/tree/v1.5
Phoenix 1.5
def deps do
[
{:absinthe_phoenix, "~> 2.0.0"}
]
end
Note: Absinthe.Phoenix requires Elixir 1.10 or higher.
Upgrading
See CHANGELOG for upgrade steps between versions.
You may want to look for the specific upgrade guide in the Absinthe documentation.
Documentation
See "Usage," below, for basic usage information and links to specific resources.
- Absinthe.Phoenix hexdocs.
- For the tutorial, guides, and general information about Absinthe-related projects, see http://absinthe-graphql.org.
Related Projects
See the GitHub organization.
Usage
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_server: MyApp.PubSub
In your application supervisor add a line AFTER your existing endpoint supervision line:
[
# other children ...
MyAppWeb.Endpoint, # this line should already exist
{Absinthe.Subscription, MyAppWeb.Endpoint}, # add this line
# other children ...
]
Where MyAppWeb.Endpoint
is the name of your application's phoenix endpoint.
In your MyAppWeb.Endpoint
module add:
use Absinthe.Phoenix.Endpoint
In your socket add:
use Absinthe.Phoenix.Socket,
schema: MyAppWeb.Schema
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.
GraphiQL Usage
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
Community
The project is under constant improvement by a growing list of
contributors, and your feedback is important. Please join us in Slack
(#absinthe-graphql
under the Elixir Slack account) or the Elixir Forum
(tagged absinthe
).
Please remember that all interactions in our official spaces follow our Code of Conduct.
Contributing
Please follow contribution guide.
Copyright and License
Copyright (c) 2016 Bruce Williams, Ben Wilson
Released under the MIT License, which can be found in LICENSE.md.