node.js - 在 socket.io 重新连接时更新查询字符串参数

标签 node.js parameters socket.io reconnect

当客户端通过 socket.io 连接时,我传递了一个包含 ID 的自定义查询字符串来授权服务器上的客户端。

var env = {id:12345};
var socket = io.connect('https://example.com', {query:'i='+env.id, port:443, reconnect:false, secure:true});  

当客户端因任何原因断开连接时,只需调用以下函数即可重新连接。

socket.socket.connect();

但是,在重新连接时 env.id 通常包含与初始连接期间不同的值,我希望在每次重新连接时在查询字符串中都有当前值。

上述reconnect方法再次发送初始值,即使env.id同时更改为其他值。

我尝试在调用reconnect函数时设置当前参数,但似乎不起作用。

socket.socket.connect('https://example.com', {query:'i='+env.id, port:443, reconnect:false, secure:true})  

有没有一种简单的方法可以用当前的 env.id 值更新查询字符串,然后重新连接?

或者我是否需要在断开连接后销毁整个套接字对象,然后使用 var socket = io.connect() 和当前 id 建立一个新连接?

最佳答案

我分析了套接字对象并找到了解决方案,因此我正在回答我自己的问题。

查询字符串存储在 socket.socket.options.query 中。您可以在重新连接之前直接将其更改为所需的值。

socket.socket.options.query = 'i='+env.id;
socket.socket.connect();

关于node.js - 在 socket.io 重新连接时更新查询字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21969236/

相关文章:

javascript - Mongoose 和 NodeJS : Creating a unique system-generated username

java - 通过 Java 反射的构造函数参数

javascript - 当 Node 退出时,与 Redis 完全断开连接?

node.js - webrtc onaddstream 未在第一个对等点上调用

android - SocketIO的回调功能是SocketIO独有的功能吗?如果是这样,标题是如何形成的?

javascript - 使用 Node.js 和 MongoDB 进行实时搜索

node.js - 这个 API 签名请求方法安全吗?

MySQL : When stored procedure parameter name is the same as table column name

javascript - NodeJS 获取流式文件下载的字节数

c++ - 编写带有可选参数的函数