目前我已经设置了 Apollo websocket 链接,如下所示:
const wsLink = new WebSocketLink({
uri: `ws://example.com/graphql?token=${getToken()}`,
options: {
reconnect: true,
connectionParams(): ConnectionParams {
return {
authToken: getToken(),
};
},
},
});
当连接持续时,此方法可以正常工作,但如果查询字符串中的令牌已过期,则需要重新建立连接时,此方法会失败。
我正在处理的基础设施的设置方式要求将此标记设置为 URI 中的查询参数。如何动态更改 URI,以便在需要重新建立连接时提供新令牌?
可以设置属性wsLink.subscriptionClient.url在函数中手动(或创建一个新的 subscriptionClient 实例?)设置上下文 https://www.apollographql.com/docs/link/links/context/ https://www.apollographql.com/docs/link/links/context/.
例如:
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
]),
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)