Socket.IO 允许中间件函数传递错误。
var io = require('socket.io')();
io.use(function(socket, next){
if (socket.request.headers.cookie) return next();
next(new Error('Authentication error'));
});
客户端可以通过监听默认的“错误”事件来监听这些错误。
clientIO.on('error', function(err) {
console.log(err);
}
有没有办法让 Socket.IO 中间件发出自定义事件名称而不是“错误”(例如,“authentication_error”)?
最佳答案
从我在代码库中看到的情况来看,它看起来不像。错误消息通过触发客户端中的 error
事件的特殊数据包类型发送,因此在这方面它不是常规消息(您可以用其他类型替换)。
不过,您确实可以选择传递带有错误的数据:
// server
io.use(function(socket, next){
if (socket.request.headers.cookie) return next();
let err = new Error('Authentication error');
err.data = { type : 'authentication_error' };
next(err);
});
// client
clientIO.on('error', function(err) {
if (err.type === 'authentication_error') {
...
} else {
...
}
}
关于node.js - 自定义 Socket.IO 中间件错误事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108485/