Вы можете использовать next(new Error("message")
, если ваша аутентификация выполняется внутри промежуточного программного обеспечения. Socket.io автоматически отправляет эти ошибки в виде специальных пакетов ошибок клиенту, что означает, что вы можете прослушивать событие на стороне клиента, например:
// Client-side
socket.on("error", data => {
// Do things with the error, such as
// displaying it on the screen or something
});
Если вы это сделаете, тогда ваш auth должен выглядят так:
// Server-side
// Here I'm assuming you're using
// socket.io v1.x.x+
io.use((socket, next) => {
jwt.verify(token, process.env.JWT_SECRET, function (err, decoded) {
if (err) {
// Authentication failed, send error packet to client
next(new Error("Auth failed!"));
} else {
// Authentication passed, call next to keep going
next();
}
});
});
Вот еще одна ссылка, если вам нужно немного больше разъяснений: https://socket.io/docs/namespaces/#Handling -middleware-error