我对订阅有一些麻烦,逻辑已经实现并且有效,我只想在我记录后立即获取令牌(当我刷新时我可以得到它而这不是我想要的方式)
我正在使用带有subscriptions-transport-ws的apollo客户端,我就像那样初始化客户端
const wsClient = new SubscriptionClient(SUB_ENDPOINT, {
reconnect: true,
timeout: 30000,
connectionParams: {
token: JSON.parse(localStorage.getItem(‘token’))
}
})
如果有人知道这可能来自哪里会非常有用
答案 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
)
我会尽快尝试并报告回来。