1

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

1 に答える 1