我有一个用Node.js编写的套接字服务器,并使用中间件来过滤套接字连接。 如果客户端使用错误的参数连接,则在使用以下代码进行握手时会引发错误:
socketServer.use(async function(socket, next){
if (socket.handshake.query){
let accessToken = socket.handshake.query.accessToken
let userId = socket.handshake.query.userId
if (accessToken && userId) {
// verify token & save user to socket for further usage
let verifyResult = verifyJwtToken(accessToken)
if (verifyResult && verifyResult.id == userId) {
socket.user = verifyResult
next()
return
} else {
next(new Error('verify token error or userId param not match verifyResult'))
return
}
}
}
next(new Error('Authentication error'));
})
但是在Client上,我不知道从此握手步骤检测套接字连接是否失败。我尝试过:
socket.on('connect_error', function(data){
console.log('socket connect error', data)
});
socket.on('connect_timeout', function(data){
console.log('socket connect timeout', data)
});
socket.on('reconnect_error', function(data){
console.log('socket reconnect error', data)
});
socket.on('reconnect_failed', function(data){
console.log('socket reconnect failed', data)
});
socket.on('disconnect', function(){
console.log('socket disconnected')
});
但是什么都没有被解雇。
我非常仔细地阅读了socket.io文档,但当握手错误出现时,他们没有提及任何有关事件触发的信息。
您知道在客户端触发此错误时如何检测到该错误吗? 请帮我。非常感谢。