如何在socket io中向单个客户端发送错误数据包?

Lif*_*ery 5 javascript sockets websocket node.js socket.io

我希望能够向客户端发出错误数据包,类似于注册中间件时的使用方式。
这有效:

var io = require('socket.io')();
io.use(function(socket, next){
  if (socket.request.headers.cookie) return next();
  next(new Error('Authentication error'));
});
Run Code Online (Sandbox Code Playgroud)

这不会:

io.on('connection', function(socket){
    socket.emit('error', {errorMessage: 'errorMessage'});
    //or
    socket.emit('error', new Error('error'));
});
Run Code Online (Sandbox Code Playgroud)

Error: Uncaught, unspecified "error" event.

如何使用套接字对象发出错误事件?

gal*_*hil 6

事件名称 'error' 保留用于传输级错误。你什么时候会尝试

io.on('connection', function(socket){
    socket.emit('exception', {errorMessage: 'errorMessage'});
});
Run Code Online (Sandbox Code Playgroud)

它应该工作得很好。

  • 同时`error`是为传输级错误保留的。您的业​​务逻辑错误不应占用此名称。它与应用程序错误具有不同的含义 (2认同)