【问题标题】:How to dynamically change Apollo Web Socket Link URI?如何动态更改 Apollo Web Socket Link URI?
【发布时间】:2020-02-19 16:46:09
【问题描述】:

目前我已经像这样设置了 Apollo 的 web socket 链接:

const wsLink = new WebSocketLink({
  uri: `ws://example.com/graphql?token=${getToken()}`,
  options: {
    reconnect: true,
    connectionParams(): ConnectionParams {
      return {
        authToken: getToken(),
      };
    },
  },
});

这在连接持续时可以正常工作,但如果查询字符串中的令牌已过期,则需要重新建立连接时会失败。

我正在处理的基础设施的设置方式要求将此令牌设置为 URI 中的查询参数。如何动态更改 URI,以便在需要重新建立连接时提供新令牌?

【问题讨论】:

    标签: apollo apollo-client apollo-link


    【解决方案1】:

    您可以在函数 setContext https://www.apollographql.com/docs/link/links/context/ 中手动设置属性 wsLink.subscriptionClient.url(或创建一个新的 subscriptionClient 实例?)。

    例如:

    import { setContext } from 'apollo-link-context'
    ...
    
        const wsLink = your code...     
    
        const authLink = setContext(() => {
            wsLink.subscriptionClient.url = `ws://example.com/graphql?token=${getToken()}`
        })
    
        ...
    
        const config = {
            link: ApolloLink.from([
                authLink,
                wsLink
            ]),
            ...
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 2019-02-13
      • 2016-12-16
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2019-06-30
      • 2018-09-05
      相关资源
      最近更新 更多