2017-02-06 2 views
0

Ich habe folgendes in meinem NodeJS Server, dass foo=bar in den Handshake der Verbindungsanfrage zu gewährleisten: 'Valid Credentials'Socket.IO Handshake Authorization

io.use(function(socket, next){ 
    console.log("Query: ", socket.handshake.query); 
    // return the result of next() to accept the connection. 
    if (socket.handshake.query.foo == "bar") { 
     console.log("Got auth params."); 
     socket.emit('chat message','Valid credentials.'); 
     return next(); 
    } 
    // call next() with an Error if you need to reject the connection. 
    console.log("Didn't get auth params."); 
    socket.emit('chat message','Invalid credentials.'); 
    next(new Error('Authentication error')); 
}); 

Wenn foo=bar in den Handshake-Daten der chat message anzeigt wird erfolgreich an den Client gesendet. Wenn jedoch foo!=bar socket.emit die ungültigen Anmeldeinformationen nicht ausgibt. Chat-Nachricht.

Ist es möglich, eine Nachricht an den Client zu senden, der die Verbindung angefordert hat, falls foo!=bar?

Ich nehme an, es wahrscheinlich ist, dass der einzige Weg, um eine Nachricht an den Client als Antwort auf ihre Verbindungsanfrag zu emittieren ist durch die Verbindung mit return next() zu akzeptieren, eine Nachricht in dem connection Ereignisse sendet die ungültigen Anmeldeinformationen anzeigt, dann ist der Abschluss Verbindung.

Antwort

0

Um die Fehlermeldung über next(new Error('Authentication error')) emittieren zu fangen einfach einen Handler für das auf der Client-Seite als solche error Ereignis erstellen:

socket.on('error', function(err){ 
    console.log('Connection Failed: ' + err); 
}); 
Verwandte Themen