{"action":"created","issue":{"url":"https://api.github.com/repos/nuwave/lighthouse/issues/88","repository_url":"https://api.github.com/repos/nuwave/lighthouse","labels_url":"https://api.github.com/repos/nuwave/lighthouse/issues/88/labels{/name}","comments_url":"https://api.github.com/repos/nuwave/lighthouse/issues/88/comments","events_url":"https://api.github.com/repos/nuwave/lighthouse/issues/88/events","html_url":"https://github.com/nuwave/lighthouse/issues/88","id":316650765,"number":88,"title":"Subscriptions","user":{"login":"chrissm79","id":1976169,"avatar_url":"https://avatars3.githubusercontent.com/u/1976169?v=4","gravatar_id":"","url":"https://api.github.com/users/chrissm79","html_url":"https://github.com/chrissm79","followers_url":"https://api.github.com/users/chrissm79/followers","following_url":"https://api.github.com/users/chrissm79/following{/other_user}","gists_url":"https://api.github.com/users/chrissm79/gists{/gist_id}","starred_url":"https://api.github.com/users/chrissm79/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrissm79/subscriptions","organizations_url":"https://api.github.com/users/chrissm79/orgs","repos_url":"https://api.github.com/users/chrissm79/repos","events_url":"https://api.github.com/users/chrissm79/events{/privacy}","received_events_url":"https://api.github.com/users/chrissm79/received_events","type":"User","site_admin":false},"labels":[{"id":896261088,"url":"https://api.github.com/repos/nuwave/lighthouse/labels/v2.x","name":"v2.x","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2018-04-23T03:32:21Z","updated_at":"2018-04-30T12:32:58Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Currently, this is just a placeholder for discussions. But as a quick progress report, I have gotten started on subscriptions this weekend and it's coming along quite nicely! Right now I have 2 variations in mind:\r\n\r\n1. Websockets (`lighthouse-subscriptions-ws`) - The main goal of this package is to keep everything in PHP land. The WS server will be built with [Ratchet](http://socketo.me/). I've tested some things out and I'm able to get Playground to connect/disconnect to a Ratchet server successfully (using the same methods as [subscriptions-transport-ws](https://github.com/apollographql/subscriptions-transport-ws)). The next step is to start pushing down messages from the server. Since a subscriber can subscribe to multiple subscriptions (lol), I need storage. So it will launch w/ InMemory and Redis storage out of the box, but it can also be extended (i.e., MySQL storage). Because of how far along I am, this will likely be the first package released.\r\n\r\n2. Pusher (`lighthouse-subscriptions-pusher`) - Maintaining an websocket server for a massive project doesn't sound fun to me... so I want to include at least one third-party solution. [graphql-ruby](https://github.com/rmosolgo/graphql-ruby) has a great solution for this, however, it does rely on a custom Link for Apollo to work with it. Relay Modern is mentioned too, but I haven't dived into the JS parts of that yet.\r\n\r\nThe coolest thing (I think) is the fact that I can create these packages completely separate from the main `lighthouse` repo by leveraging directives! So hopefully, the community will be able to create some great alternatives if you use a different 3rd party WS provider or if you have a solution that relies on something other than Ratchet (i.e., Node). \r\n\r\nI currently don't have a timeline for this, it just being done after work hours and on the weekends but this weekend was pretty productive so I'm really hoping it won't be too long before I can get this in everyone's hands!"},"comment":{"url":"https://api.github.com/repos/nuwave/lighthouse/issues/comments/385385132","html_url":"https://github.com/nuwave/lighthouse/issues/88#issuecomment-385385132","issue_url":"https://api.github.com/repos/nuwave/lighthouse/issues/88","id":385385132,"user":{"login":"chrissm79","id":1976169,"avatar_url":"https://avatars3.githubusercontent.com/u/1976169?v=4","gravatar_id":"","url":"https://api.github.com/users/chrissm79","html_url":"https://github.com/chrissm79","followers_url":"https://api.github.com/users/chrissm79/followers","following_url":"https://api.github.com/users/chrissm79/following{/other_user}","gists_url":"https://api.github.com/users/chrissm79/gists{/gist_id}","starred_url":"https://api.github.com/users/chrissm79/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrissm79/subscriptions","organizations_url":"https://api.github.com/users/chrissm79/orgs","repos_url":"https://api.github.com/users/chrissm79/repos","events_url":"https://api.github.com/users/chrissm79/events{/privacy}","received_events_url":"https://api.github.com/users/chrissm79/received_events","type":"User","site_admin":false},"created_at":"2018-04-30T12:32:58Z","updated_at":"2018-04-30T12:32:58Z","author_association":"CONTRIBUTOR","body":"@TGNThump, damn that looks nice! The only thing I had left on my version was generating and storing the context, but it's pretty verbose and I needed to clean things up quite a bit before release. Your solution looks extremely streamlined and easy to understand 👍 I'll check it out in depth but thank you for providing this!!!"}}
{"actor":{"display_login":"chrissm79"}}