gpt4 book ai didi

node.js - 如何识别 Socket.IO 中身份验证成功(不成功)(通过 socketio-auth)?

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:27 25 4
gpt4 key购买 nike

我正在尝试借助 Socket.IO 和 socketio-auth 在 Node.js 服务器中实现 Websocket 身份验证。我的测试平台是一个简单的聊天,客户端需要向服务器发送密码才能获得加入权限。我通过 socketio-auth 执行此操作,如下所示:

客户端:

socket.on('connect', function(){
socket.emit('authentication', {client: "client", password: "test"});
});

服务器端:

require('socketio-auth')(io, {authenticate: function(data, cb){
cb(null, data.password == 'test');}
})

这按预期工作。按原样,它允许客户端加入。如果我发送错误的密码,连接将被拒绝。

但是,我不知道如何从服务器收集数据,告诉客户端它没有连接权限。我现在得到的只是客户端控制台上显示“400 Bad request”的 POST。客户端如何检测它已被拒绝访问?

谢谢

一月

最佳答案

我想出了如何检测错误:由于服务器终止了连接,因此可以简单地监听“断开连接”事件:

客户:

socket.on('disconnect', function(error) {
console.log(error); // "io server disconnect"
})

每当套接字因任何原因断开连接时,这当然会触发。避免这种情况的一种方法是首先监听“已验证”事件,该事件在通过正确身份验证成功连接时触发。其中一个只是覆盖“断开连接”事件:

客户:

socket.on('authenticated', function() {
socket.on('disconnect', function(error) {
// override
})
})

关于node.js - 如何识别 Socket.IO 中身份验证成功(不成功)(通过 socketio-auth)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27485363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com