使用domains和socket.io进行Nodejs错误处理

dor*_*x45 7 dns node.js socket.io node.js-domains

我刚刚开始在nodejs中使用域来进行错误管理.

当我将它们与socket.io一起使用时,我无法理解.

这是我的示例代码:

io.sockets.on('connection', function cb1(socket){
    socket.on('event', function cb2(data){
    });
});
Run Code Online (Sandbox Code Playgroud)

我开始将所有代码都放在"run"方法中

domain.run(function(){
    io.sockets.on('connection', function cb1(socket){
        socket.on('event', function cb2(data){
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

但如果在cb1或cb2中发生错误,则不会处理!

然后我在che cb1上使用了bind methon

domain.run(function(){
    io.sockets.on('connection', domain.bind(function cb1(socket){
        socket.on('event', function cb2(data){
        });
    }));
});
Run Code Online (Sandbox Code Playgroud)

但如果在cb2中发生错误则不会处理!

我的问题是:我是否必须在每次回调中添加一个"绑定"?在服务器和所需的文件中?

当我开始研究领域时,所有教程都将它们定义为在一个点上处理错误的最佳解决方案!

我错过了什么吗?

小智 0

如果您在域范围内创建套接字,则该套接字对象中引发错误的所有事件都将被域捕获。

domain.run(function(){
  var io = require('socket.io').listen(80);
  io.sockets.on('connection', function cb1(socket){
    socket.on('event', function cb2(data){
   });
  }));
});
Run Code Online (Sandbox Code Playgroud)

尝试这个。