Ho intenzione di provare ad autenticare una connessione su socket.io.Autenticazione in Socket.io
Attualmente, l'utente viene prima autenticato tramite un'API REST, quindi, l'utente invia un JsonWebToken
con il nome utente dell'utente autenticato. Dopo aver aperto la connessione tra il client e il server, il mio piano è quello di eliminare temporaneamente quel socket dall'elenco dei socket connessi per impedire la ricezione e l'invio di dati tra il server mentre eseguo l'auth.
In questa autenticazione, verifica il token e se il token è valido, aggiungo nuovamente l'ID del socket all'elenco dei socket connessi. L'unico problema è che la prima parte non funziona. Non riesco a cancellare il socket dalla lista.
Per verificare questo ho fatto quanto segue.
io.on('connection', function(socket){
//temp delete socket
delete io.sockets.connected[socket.id];
console.log(io.sockets.connected);
socket.emit("test");
});
Come potete vedere cancello la presa ed emettono un evento di prova per vedere se il socket è ancora aperto. Il messaggio è stato ricevuto dal client quando non dovrebbe essere.
Qualcuno sa perché questo si verifica?
se la presa è ancora aperta. Quindi ascolta sempre.Prima di ciò è necessario confermare che tutta la connessione è stata chiusa. Se qualcuno di questi non chiude, il client live ascolterà. grazie. –
Non si desidera disconnettere temporaneamente il socket. socket.io ha uno schema di autenticazione che puoi collegare in modo che il socket non venga mai accettato se non autentica. Tieni presente che tutte le connessioni webSocket iniziano con una richiesta http, quindi se sei già autenticato tramite http, puoi utilizzarlo anche per il webSocket. Anche l'eliminazione di un socket da 'io.socket.connected' non comporta la disconnessione del socket. – jfriend00
Io uso il resto api per autenticare un utente in modo che possano usare il servizio. Per quanto ne so, posso autenticare l'utente ma non posso autenticare la sessione socket.io allo stesso modo. La mia idea era di usare i token per assicurare che la persona che usa il socket sia autenticata –