Lighthouse graphql订阅

时间:2019-07-24 09:57:38

标签: php laravel graphql laravel-lighthouse

谁能告诉我如何使用lighthouse graphql订阅,我按照此处https://lighthouse-php.com/3.1/extensions/subscriptions.html的说明进行了所有步骤,但是当移动团队(android和ios)尝试使用它时,它要求他们输入websocket终结点,因此如何我可以制作带有graphql lighthouse订阅的Websocket吗?我通常了解laravel websocket,但是如何将这个websocket与graphql灯塔的订阅联系起来?

2 个答案:

答案 0 :(得分:2)

默认情况下,Lighthouse订阅是通过Pusher-服务发送的。当您运行以下查询时,Lighthouse将随后注册订阅服务器端。

subscription PostUpdated {
    postUpdated(id: 123) {
        title
    }
}

查询将返回一个Pusher通道(请参见下面的示例)。您刚刚创建的订阅中的所有事件都将发送到该频道。您的客户端实现必须能够订阅Pusher消息。如果您使用的是Apollo或Relay modern,则可以查看Lighthouse-docs中的代码片段。

{
  "data": {
    "postUpdated": null
  },
  "extensions": {
    "lighthouse_subscriptions": {
      "version": 1,
      "channels": {
        "PostUpdated": "private-lighthouse-wlAyAuW8aBlthctY2rkRGRlaaGq30Iqr-1564126310"
      }
    }
  }
}

每次ID为123的帖子发生更改时,您都应该通过Pusher收到一条消息,其中包含查询的数据。请注意,您必须使用@broadcast指令或手动触发订阅,有关更多信息,请参见trigger subscriptions

答案 1 :(得分:0)

您需要使用4.18版本,其余同文档