1

下面列出的订阅查询在graphql 操场上的代码中运行良好,但是当我尝试将我的graphql-ws客户端与 gqlgen 驱动的 go 服务器连接时,我得到了WebSocket 连接到 'ws://localhost:7080/query' 失败的错误。我尝试使用graphql-ws 的 useServer 功能连接到本地运行的其他 localhost 服务器,该功能运行良好,但在连接 go 服务器时出现问题。

客户代码:-

(async () => {
 const client = graphqlWs.createClient({
            url: 'ws://localhost:7080/query',
        });


 const onNext = (data) => {
          /* handle incoming values */
          console.log("data===>", data)
  };

    await new Promise((resolve, reject) => {
                unsubscribe = client.subscribe(
                    {
                        query: `subscription {
                            ping
                          }`
                       
                    },
                    {
                        next: onNext,
                        error: reject,
                        complete: resolve
                    },
                );
            });
            } catch(e) {
                console.error("E==>", e)
            }
   })();  

前两天一直在苦苦寻找一些有用的博客和在线链接,但没有发现任何有用的连接 go 服务器和 vanilla js 的东西。还在其 github 页面上搜索了graphql-ws库中列出的问题,但也没有列出此类问题。

如果需要其他信息,请告诉我。

4

1 回答 1

0

如果你在谈论这个gqlgen,它不支持GraphQL over WebSocket 协议 graphql-ws实现。遗憾的是,它仅支持subscriptions-transport-ws. (这就是为什么graphql-playground有效)。这意味着,您必须将subscriptions-transport-ws与他们的后端一起使用。

于 2021-05-24T17:53:44.060 回答