Javascript Socket.io授权失败不会重试重新连接

Javascript Socket.io授权失败不会重试重新连接,javascript,node.js,socket.io,authorization,reconnect,Javascript,Node.js,Socket.io,Authorization,Reconnect,我正在使用socket io和一个简单的令牌身份验证方法服务器端: io.use(function(socket, next){ var handshake = socket.request; if(token == handshake._query.token) { console.log('Client authorized'); next(); } else { console.log('Client not authorized'); next(new

我正在使用socket io和一个简单的令牌身份验证方法服务器端:

io.use(function(socket, next){

var handshake = socket.request;
if(token == handshake._query.token)
{
    console.log('Client authorized');
    next();
}
else
{
    console.log('Client not authorized');
    next(new Error('not_authorized'));
    socket.disconnect();
}
})

问题是,如果客户端第一次授权失败,则不会再次尝试连接,即使我发送了手动新连接,它也不会重新连接,直到总页面刷新。 客户端:

var socket = io.connect(this.adress, {query: 'token=123456789', transports:['websocket', 'polling'] });
socket.on('error', function(err){
                console.log(err);
                if(err == 'not_authorized')
                {

                    console.log('gettin toke');//NOT ENTERING HERE
                }
                PS.connected = false;
            });
如何重试重新连接另一个参数

解决方法,将此变量设置为再次尝试连接:

                PS.socket.socket.connecting = false;
                PS.socket.socket.options.query = 'token='+tok;
var socket = io.connect(this.adress, {
    query: 'token=123456789',
    transports:['websocket', 'polling'],
    forceNew: true
});
根据说明,您不应使用socket.disconnect;。您的客户端错误事件不会完全因为这一行而触发

编辑:

重新连接时,您也可以尝试在连接选项中将forceNew设置为true:

                PS.socket.socket.connecting = false;
                PS.socket.socket.options.query = 'token='+tok;
var socket = io.connect(this.adress, {
    query: 'token=123456789',
    transports:['websocket', 'polling'],
    forceNew: true
});

即使移除也不能解决问题。似乎当授权失败时,无法再重试连接。我测试了它,但它不起作用,我找到了版本0.9的解决方法。在编辑中