使用订阅时,laravel-graphql-playground无法连接到UI中的websocket

时间:2019-08-02 15:30:00

标签: laravel graphql pusher graphql-subscriptions laravel-lighthouse

我目前正在使用Lighthouse作为laravel的graphql服务器。我已经研究了他们网站上的订阅文档(https://lighthouse-php.com/master/subscriptions/getting-started.html),并将适当的推送程序凭据添加到.env文件中。

当尝试通过graphql-playground UI进行订阅时,出现以下错误:

订阅:

subscription {
  orgUserCreated {
    org
  }
}

错误:

{
  "error": "Could not connect to websocket endpoint ws://localhost:8000/graphql. Please check if the endpoint url is correct."
}

所有变异和查询均应正常工作。

我已经为laravel-graphql-playground laravel覆盖了index.blade.php文件,并且可以向该文件添加“ subscriptionEndpoint”变量,但是尚不清楚该变量应包含什么。

<script type="text/javascript">
  window.addEventListener('load', function (event) {
    const loadingWrapper = document.getElementById('loading-wrapper');
    loadingWrapper.classList.add('fadeOut');
    const root = document.getElementById('root');
    root.classList.add('playgroundIn');
    GraphQLPlayground.init(root, {
      endpoint: "{{url(config('graphql-playground.endpoint'))}}",
      subscriptionEndpoint: "?"
    })
  })
</script>

自从我通过推送程序进行连接以来,有人知道“ subscriptionEndpoint”变量中应该包含什么吗?

2 个答案:

答案 0 :(得分:1)

Pusher Channels的订阅终结点如下(用“ you-cluster”代替您的Channels应用程序所在的群集):

ws://ws-[your-cluster].pusherapp.com在端口80

wss://ws-[your-cluster].pusherapp.com在端口443

您可以在下面看到更多信息:

https://pusher.com/docs/channels/miscellaneous/clusters#what-clusters-exist-

https://support.pusher.com/hc/en-us/articles/360019420773-What-ports-do-I-need-to-open-in-my-Firewall-to-allow-Channels-to-connect-

答案 1 :(得分:0)

为了将来参考,我必须使用以下内容:

wss://ws-[CLUSTER].pusher.com:443/app/[APP_KEY]?protocol=5
ws://ws-[CLUSTER].pusher.com:80/app/[APP_KEY]?protocol=5

[CLUSTER]可以在推动器上找到,我的名字是“ eu”

[APP_KEY]不是应用ID,而是公共密钥