gpt4 book ai didi

node.js - Socket.io - 如何向客户端发送身份验证错误?

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:21 25 4
gpt4 key购买 nike

我在服务器端使用socket.io,在客户端使用socket.io-client。我有以下自定义身份验证功能:

io.use(function(socket, next){
console.log("Query: ", socket.handshake.query);
// return the result of next() to accept the connection.
if (socket.handshake.query.foo == "bar") {
return next();
}
// call next() with an Error if you need to reject the connection.
next(new Error('Authentication error'));
});

如果身份验证失败,我希望客户端知道这一点。但是,它不会在我的客户端触发 connect_error

这不可能吗?如果是的话,我做错了什么?我需要在服务器端或客户端做更多的事情吗?

最佳答案

我只是弄清楚我的问题是什么,我使用根管理器(io)定义了一个中间件:

const SocketIO = require('socket.io');
const io = SocketIO.listen(server.listener, options);

io.use((socket, next) => next(new Error('ERRRRROR')));

在客户端,我连接到 /devices 命名空间:

manager = io.connect('http://192.168.33.34:7650/devices');
manager.on('error', (e) => console.log(e));

在每个连接上,error 回调永远不会执行,直到我尝试将中间件设置为定义的命名空间 /devices:

const nspDevices = io.of('/devices');
nspDevices.use((socket, next) => next(new Error('ERRRRROR')));

然后error回调在客户端成功执行。

希望这对您有帮助。

关于node.js - Socket.io - 如何向客户端发送身份验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710055/

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