【问题标题】:nodejs terminates on redis failurenodejs在redis失败时终止
【发布时间】:2013-09-04 16:44:14
【问题描述】:

我正在使用 Node.js、Express、Redis 和 Socket.io。当 Redis 宕机时,Node.js 将终止。

我怎样才能防止这种情况,可能是在某个地方进行代码重新连接之类的?

输出:

info - socket.io started
Express server listening on port 3000

错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^ Error: Redis connection to 127.0.0.1:6380 failed - connect ECONNREFUSED
    at RedisClient.on_error (...../node_modules/redis/index.js:151:24)
    at Socket.<anonymous> (...../node_modules/redis/index.js:86:14)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:426:14
    at process._tickCallback (node.js:415:13)

【问题讨论】:

  • 对错误信息表示抱歉。不知道如何在这里格式化它们。
  • 如果您可以将以下答案标记为已接受,那就太好了 - 这是一个有用的答案。
  • 好久不见。我记不太清了。你认为这是答案吗?如果是这样,我会标记它。

标签: node.js express redis socket.io


【解决方案1】:

您的 redis 客户端实例似乎没有错误处理程序。你能提供一些你的代码的摘录吗?也许我们可以通过这种方式更好地帮助您。只是错误信息少了一点。

如果我不得不猜测,那么我会说你没有错误处理程序......

请看这里:https://github.com/mranney/node_redis#usage

你有错误回调吗?

例子:

var redis = require("redis"),
client = redis.createClient();


// This is required so your error doesn't bubble
// upwards and kills your instance

client.on("error", function (err) {
    console.log("Error " + err);
});

node_redis 客户端会自动重新连接,因此您无需处理此问题,尽管您可以配置 max_attempts 和其他选项。见这里:https://github.com/mranney/node_redis#rediscreateclientport-host-options

希望我能提供一些有用的信息

【讨论】:

  • 我会试试这个。谢谢!
  • 不是redis客户端,是socket.io redis适配器。
【解决方案2】:

如果您使用的是 socket.io redisAdapter,请在创建您的 socket.io 服务器后执行此操作:

io.of('/').adapter.on('error', (err)=>{console.log('adapter error',err)});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多