シンプルなトークン認証方法 (サーバー側) でソケット 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;