【问题标题】:node.js (socket.io) stop comunicate with client after *catch* the errornode.js (socket.io) 在 *catch* 错误后停止与客户端通信
【发布时间】:2013-05-06 14:03:01
【问题描述】:

使用这段代码我故意创建了一些错误,为什么 nodejs/socket.io 停止响应客户端?请注意,nodejs 进程仍然启动,没有任何崩溃或退出。

socket.on('message', function (data) {
    var d = domain.create();

    d.on('error', function(err) {
        socket.emit('error', err.message);
    });

    d.run(function() {
        execError();
    }
});

【问题讨论】:

  • 我可以重现它,这似乎是一个错误,但我还没有仔细研究它(还)。
  • 更新:我可以接收数据,但不能发送。
  • 更新 3:如果 d.run() 的根目录中存在错误,socket.io 停止响应并在一段时间后重新连接。但是,如果错误发生在同一个 d.run() 内但在类似的范围内: redclient.hget('hkey','key', d.bind(function (err, block) { ERROR(); } ); socket.io 发现了错误并保持响应,因为没有发生任何事情。
  • 我认为这是非常奇怪和非常出乎意料的行为。也许您应该在github.com/learnboost/socket.io/issues 上发布错误报告

标签: node.js error-handling socket.io


【解决方案1】:

一切正常,是我的代码造成了问题。

更多关于域的信息:

http://blog.evantahler.com/blog/on-domains-and-connections-with-node-js.html

https://gist.github.com/evantahler/4274698

【讨论】:

  • 更新第 2 部分:nop 不正常,是一些侦听器 socket.on(...) 错误被捕获并且 socket.io 保持正常并使所有发射,但在其他 socket.io 停止响应. :(
猜你喜欢
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2019-04-15
  • 2016-05-31
  • 2020-04-24
  • 2020-10-25
相关资源
最近更新 更多