【发布时间】:2020-01-11 08:16:11
【问题描述】:
我正在尝试对 socketio websockets 进行身份验证,但遇到了涉及身份验证令牌设置的问题。问题归结为以下几点:我用来获取最新身份验证令牌的函数是异步的,但似乎为"reconnect_attempt" 事件的socketio 侦听器提供了async 函数不等待让函数在尝试重新连接之前返回。
总之就是这段代码
socket.on("reconnect_attempt", async () => {
const token = await getIdToken();
socket.io.opts.query = { token };
});
在重新连接请求发送到服务器之前,实际上并没有设置套接字的query.token。因此,当令牌过期后发生重新连接时,会在获取新令牌的同时发送过期令牌。
有没有办法以某种方式配置 socketio,使其在实际触发重新连接请求之前等待侦听器的处理函数返回?如果没有,我想我将不得不主动刷新令牌并将其存储在应用程序的某个位置,但很好奇这是否可能。
【问题讨论】:
标签: javascript socket.io