javascript - Apollo 客户端订阅中的过期令牌
问题描述
我在 http 链接中有有效的订阅和正确的令牌,但我从 ws 链接的最后一个会话中获得了陈旧的令牌。当我控制台记录connectionParams
处理程序时,它只会在页面刷新时执行,所以难怪我会得到陈旧的令牌。我认为它应该在每个 websocket 事务上执行。我的服务器代码没问题,我解析令牌没有问题。我从本地存储中读取令牌的方式与为 http 链接读取令牌的方式相同。客户端的完整代码可以在这里找到
这是我的 websockets 链接:
const wsLink = new WebSocketLink({
uri: `ws://localhost:8000/graphql`,
options: {
reconnect: true,
lazy: true,
inactivityTimeout: 1000,
connectionParams: () => {
const token = localStorage.getItem('token');
// this console log gets executed
// only on page refresh
console.log('token ws', token);
return {
headers: {
'x-token': token ? token : '',
},
};
},
},
});
解决方案
推荐阅读
- python - setuptools.setup() 接受哪些关键字参数?
- python - 带有 Python 脚本的 Azure Databricks
- ruta - Ruta 转义特殊字符
- c++ - 递归函数给出分段错误,如何将指针对象指向它的子对象?
- xorg - How do I emulate Play media key on a laptop with no media keys on GNU/Linux?
- node.js - NodeJS read JSON data with # in key
- python - 您如何在顶层窗口中使用各种变量进行计算?
- c# - 使用 C# 在 MongoDB 中将 XML 转换为 BsonArray
- python - 使用python线程访问大量数据
- javascript - 如何使用 google-appscripts 在我的电子邮件中将 google 幻灯片作为附件发送?