我正在使用带有简单令牌身份验证方法(服务器端)的套接字 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;