糟糕的时机Apollo订阅

时间:2018-05-04 13:45:32

标签: apollo

我对订阅有一些麻烦,逻辑已经实现并且有效,我只想在我记录后立即获取令牌(当我刷新时我可以得到它而这不是我想要的方式)

我正在使用带有subscriptions-transport-ws的apollo客户端,我就像那样初始化客户端

const wsClient = new SubscriptionClient(SUB_ENDPOINT, {
reconnect: true,
timeout: 30000,
connectionParams: {
token: JSON.parse(localStorage.getItem(‘token’))
}
})

如果有人知道这可能来自哪里会非常有用

1 个答案:

答案 0 :(得分:0)

我已经看到了解决这个问题的两种方法。我还没试过。

您可以在身份验证wsClient.close(false,false)上关闭连接,或者使用经过身份验证和未经身份验证的路由创建拆分链接。

function isAuthenticated() { ... <true || false> }

const unauthenticatedLink = new WebSocketLink({
  uri: `ws://localhost:5000/`,
  options: {
    reconnect: true
  }
})

const authenticatedLink = new WebSocketLink({
    uri: `ws://localhost:5000/`,
    options: {
      reconnect: true,
      connectionParams: {
          token: localStorage.getItem('token')
      }
    }
  })

const link = split(
  () => isAuthenticated(),
  authenticatedLink,
  unauthenticatedLink
)

我会尽快尝试并报告回来。