【问题标题】:How to update query params in Socket.io connection?如何更新 Socket.io 连接中的查询参数?
【发布时间】:2020-11-29 01:31:21
【问题描述】:

有谁知道是否可以在不断开/重新连接的情况下更新 socket.io 查询参数?

此外,如果必须重新连接是更新查询参数的唯一方法,那么除了 socket.disconnect() 之外还有其他优雅的方法,然后是 socket.connect(); ?

这是我目前的解决方案(看起来很不优雅):

socket.io.opts.query = {
          session_id: sessID,
          access_token: _data.access_token,
};
socket.disconnect();
socket.connect();

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    首先我建议先断开连接,然后才更改数据:

    socket.disconnect();
    socket.io.opts.query = {
              session_id: sessID,
              access_token: _data.access_token,
    };
    socket.connect();
    

    其次,您的session_idaccess_token 字段在服务器上用于对用户进行身份验证,您可以发送请求(emit)来更新此数据而不会中断连接。在此之后,您清理旧用户数据并在服务器上初始化新用户数据。这个解决方案也不优雅,但它会避免断开连接,这在我看来更重要。

    例子:

    客户端

    socket.emit('relogin', {
      session_id: sessID,
      access_token: _data.access_token,
    });
    

    服务器端

    socket.on('relogin', async ({ session_id, access_token }) => {
      relogin(session_id, access_token); // update user data
    });
    

    附:抱歉延迟回复。我也谈到了这个问题,决定在这里写下我的经历。

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 2014-03-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      相关资源
      最近更新 更多