Я использую сокет IO с методом простого токена аутентификации (на стороне сервера):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();
}
});
Проблема заключается в том, что если клиент не выполнил авторизацию в первый раз (неправильный токен), он не будет повторно подключаться, чтобы подключиться, даже если я отправлю новое ручное соединение, оно не будет реконструироваться до полной обновления страницы. Cliend сторона:
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;
});
Как я могу повторить заново с другим параметром?
Обход, установите эти переменные againg повторить попытку подключения:
PS.socket.socket.connecting = false;
PS.socket.socket.options.query = 'token='+tok;
Даже удаление, что не решает. Похоже, что при отсутствии авторизации соединение не может быть повторено. – albanx
Я нашел решение. Взгляните на мое редактирование – Curious
Я тестировал, и он не работает, я нашел обходное решение для версии 0.9. В редакции – albanx