Socket.IO客户端:如何检测握手是否失败?

时间:2019-05-20 10:53:48

标签: socket.io

我有一个用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文档,但当握手错误出现时,他们没有提及任何有关事件触发的信息。

您知道在客户端触发此错误时如何检测到该错误吗? 请帮我。非常感谢。

0 个答案:

没有答案